现有代码实现

代码入口

applicationContext-web.xml

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

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

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:hbase.properties</value>
            <value>classpath:jdbc.properties</value>
        </list>
    </property>
</bean>

其他导入的spring配置文件:

<import resource="classpath:applicationContext-hbase.xml" />
<import resource="classpath:applicationContext-datasource.xml" />
<import resource="classpath:applicationContext-dao-config.xml" />
<import resource="classpath:applicationContext-cache.xml" />
<import resource="classpath:applicationContext-websocket.xml" />

批处理

类 BatchConfiguration

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

@Configuration
@Conditional(BatchConfiguration.Condition.class)
@ImportResource("classpath:/batch/applicationContext-batch-schedule.xml")
public class BatchConfiguration{
    static class Condition implements ConfigurationCondition {
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
            ......
            Resource resource = context.getResourceLoader().getResource("classpath:/batch.properties")
            ......
            final String enable = properties.getProperty("batch.enable");
            ......
        }
    }
}

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

applicationContext-batch-schedule.xml

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

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

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

batch.properties

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

#batch enable config
batch.enable=true

#batch server ip to execute batch
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

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

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

jdbc.properties

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

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

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