现有代码实现

代码入口

applicationContext-web.xml

文件路径: pinpoint/web/src/main/resources/applicationContext-web.xml

导入的配置文件有hbase.properties和jdbc.properties:

  1. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  2. <property name="locations">
  3. <list>
  4. <value>classpath:hbase.properties</value>
  5. <value>classpath:jdbc.properties</value>
  6. </list>
  7. </property>
  8. </bean>

其他导入的spring配置文件:

  1. <import resource="classpath:applicationContext-hbase.xml" />
  2. <import resource="classpath:applicationContext-datasource.xml" />
  3. <import resource="classpath:applicationContext-dao-config.xml" />
  4. <import resource="classpath:applicationContext-cache.xml" />
  5. <import resource="classpath:applicationContext-websocket.xml" />

批处理

类 BatchConfiguration

文件路径:pinpoint/web/src/main/java/com/navercorp/pinpoint/web/batch/BatchConfiguration.java

  1. @Configuration
  2. @Conditional(BatchConfiguration.Condition.class)
  3. @ImportResource("classpath:/batch/applicationContext-batch-schedule.xml")
  4. public class BatchConfiguration{
  5. static class Condition implements ConfigurationCondition {
  6. @Override
  7. public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
  8. ......
  9. Resource resource = context.getResourceLoader().getResource("classpath:/batch.properties")
  10. ......
  11. final String enable = properties.getProperty("batch.enable");
  12. ......
  13. }
  14. }
  15. }

Condition中会读取配置文件batch.properties中的配置项batch.enable,默认是false。因此如果要开启批处理功能,必须设置batch.enable=true。

applicationContext-batch-schedule.xml

文件路径为:pinpoint/web/src/main/resources/batch/applicationContext-batch-schedule.xml

  1. <task:scheduled-tasks scheduler="scheduler">
  2. <task:scheduled ref="batchJobLauncher" method="alarmJob" cron="0 0/3 * * * *" />
  3. </task:scheduled-tasks>

为了测试方便,可以修改cron表达式为 cron=”/5 *”,每5秒钟执行一次。

batch.properties

文件路径为:pinpoint/web/src/main/resources/batch.properties

  1. #batch enable config
  2. batch.enable=true
  3. #batch server ip to execute batch
  4. batch.server.ip=127.0.0.1

设置batch.enable=true,另外设置batch.server.ip=127.0.0.1这样每台pinpoint web都会跑批处理。如果安装有多台pinpoint web,可以设置为其中一台的IP。

数据源

applicationContext-datasource.xml

文件路径:pinpoint/web/src/main/resources/applicationContext-datasource.xml

  1. <!-- DataSource Configuration -->
  2. <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
  3. <property name="driverClassName" value="${jdbc.driverClassName}"/>
  4. <property name="url" value="${jdbc.url}"/>
  5. <property name="username" value="${jdbc.username}"/>
  6. <property name="password" value="${jdbc.password}"/>
  7. ......
  8. </bean>

定义了名为dataSource的数据源给其他spring bean使用,配置信息来自jdbc.properties。

jdbc.properties

文件路径:pinpoint/web/src/main/resources/jdbc.properties

  1. jdbc.driverClassName=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:13306/pinpoint?characterEncoding=UTF-8
  3. jdbc.username=admin
  4. jdbc.password=admin

定义了名为dataSource的数据源,使用mysql。