67,518
社区成员
发帖
与我相关
我的任务
分享
package com.sunshine.pdt.system.pdtTrail.quartz;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletContext;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.context.ServletContextAware;
import com.sunshine.pdt.system.pdtTrail.bean.PdtTrail;
import com.sunshine.pdt.system.pdtTrail.service.PdtTrailModuleExtractManager;
import com.sunshine.pdt.system.utils.DateTools;
import com.sunshine.pdt.system.utils.TimeStampConstant;
/**
* 定时间调度器
*
* @author huzhaoj
*
*/
public class PdtTrailMouduleExtractJob implements ServletContextAware {
@Autowired
@Qualifier("pdtTrailModuleExtractManager")
private PdtTrailModuleExtractManager pdtTrailModuleExtractManager;
private Logger log = Logger.getLogger(PdtTrailMouduleExtractJob.class);
private File file;
private Object lock = new Object();
/**
* 抽取实时轨迹信息
*
* @throws Exception
*/
public void extractTrail() {
List<Long> result = null;
synchronized (lock) {
result = getTimeStamp();
}
long tsStart = result.get(0);
long tsEnd = result.get(1);
String kssj = DateTools.longToTime(tsStart);
String jssj = DateTools.longToTime(tsEnd);
System.out.println("开始时间_________:"+kssj);
System.out.println("结束时间_________:"+jssj);
List<PdtTrail> trackList = new ArrayList<PdtTrail>();
try {
long passStart = System.currentTimeMillis();
trackList = pdtTrailModuleExtractManager.queryTrailFromSW(kssj,jssj);
if(trackList.size() >0 && null != trackList ){
for(PdtTrail pdtTrail:trackList){
pdtTrailModuleExtractManager.extractTrailToST(pdtTrail);
}
}
long passEnd = System.currentTimeMillis();
log.info(Thread.currentThread().getName()+"- 抽取实时轨迹信息("+ kssj +"-"+jssj+")"+")耗时:" + (passEnd-passStart) +"毫秒-");
} catch (Exception e) {
e.printStackTrace();
log.info("抽取实时轨迹信息异常,异常信息为:"+e.getMessage());
}
}
/**
* 从文件加载最大时间缀,并计算结束时间缀
*
* @return
*/
public List<Long> getTimeStamp() {
List<Long> result = null;
try {
result = new ArrayList<Long>();
String temp = FileUtils.readFileToString(file);
long tsStart = 0L;
if (temp.length() > 0)
tsStart = Long.valueOf(FileUtils.readFileToString(file));
//long tsEnd = tsStart + AppContext.getAppContext().getInterval();
long tsEnd = new Date().getTime();
FileUtils.writeStringToFile(file, String.valueOf(tsEnd));
result.add(tsStart);
result.add(tsEnd);
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@Override
public void setServletContext(ServletContext sct) {
String path = sct.getRealPath(TimeStampConstant.TIMESTAMP_FILE_PATH);
file = new File(path);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!-- 实时导入轨迹信息 -->
<bean id="trailJob" class="com.sunshine.pdt.system.pdtTrail.quartz.PdtTrailMouduleExtractJob" />
<bean id="trailJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="trailJob" />
<property name="targetMethod" value="extractTrail" />
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
<property name="concurrent" value="true"/>
</bean>
<!-- Use Quartz 2.x -->
<bean id="trailCronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="trailJobDetail"/>
</property>
<property name="cronExpression">
<value>0/20 * * * * ?</value>
</property>
</bean>
<bean id="ExtractTrailScheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="trailCronTrigger"/>
</list>
</property>
<property name="configLocation">
<value>/WEB-INF/classes/quartz.properties</value>
</property>
<property name="startupDelay" value="5"/>
<!--property name="dataSource" ref="ds"/-->
</bean>
</beans>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sunshine</groupId>
<artifactId>pdt</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>pdt Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!-- 文件拷贝时的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 编译的编码 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<junit.version>3.8.1</junit.version>
<spring.version>3.1.0.RELEASE</spring.version>
<cxf.version>2.2.3</cxf.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- spring 依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>5</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.sunshine</groupId>
<artifactId>core</artifactId>
<version>0.0.2</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
</project>
开始时间_________:2016-12-16 11:28:20
结束时间_________:2016-12-16 11:28:40
11:28:40,027 INFO PdtTrailMouduleExtractJob:70 - ExtractTrailScheduler_Worker-2- 抽取实时轨迹信息(2016-12-16 11:28:20-2016-12-16 11:28:40))耗时:13毫秒-
2016-12-16 11:28:40,028 [ExtractTrailScheduler_Worker-2] ERROR org.quartz.core.JobRunShell - Job DEFAULT.trailJobDetail threw an unhandled Exception:
java.lang.IncompatibleClassChangeError: Found interface org.quartz.JobExecutionContext, but class was expected
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:299) ~[spring-context-support-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:111) ~[spring-context-support-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[quartz-2.2.1.jar:na]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.2.1.jar:na]
2016-12-16 11:28:40,031 [ExtractTrailScheduler_Worker-2] ERROR org.quartz.core.ErrorLogger - Job (DEFAULT.trailJobDetail threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) ~[quartz-2.2.1.jar:na]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.2.1.jar:na]
Caused by: java.lang.IncompatibleClassChangeError: Found interface org.quartz.JobExecutionContext, but class was expected
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:299) ~[spring-context-support-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:111) ~[spring-context-support-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[quartz-2.2.1.jar:na]
... 1 common frames omitted