From 8cb0084749c5334eec1ec7bae4abd91e2de5b4b1 Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Mon, 17 Mar 2008 12:50:05 +0800 Subject: [PATCH] update for EOFM-20 --- ximple-jobcarrier/src/main/resources/quartz_jobs.xml | 73 ++++++++++++++++++ .gitattributes | 2 ximple-jobcarrier/pom.xml | 19 ++++ ximple-jobcarrier/src/main/resources/quartz.properties | 28 +++++++ ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java | 50 ++++++++++++ ximple-jobcarrier/src/main/resources/log4j.properties | 15 +++ 6 files changed, 186 insertions(+), 1 deletions(-) diff --git a/.gitattributes b/.gitattributes index c604cc5..e290121 100644 --- a/.gitattributes +++ b/.gitattributes @@ -37,6 +37,8 @@ ximple-jobcarrier/pom.xml svneol=native#text/xml ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java svneol=native#text/plain ximple-jobcarrier/src/main/resources/log4j.properties svneol=native#text/plain +ximple-jobcarrier/src/main/resources/quartz.properties svneol=native#text/plain +ximple-jobcarrier/src/main/resources/quartz_jobs.xml svneol=native#text/xml ximple-jobcarrier/src/test/java/com/ximple/eofms/XQuartzJobCarrierTest.java svneol=native#text/plain ximple-spatialjob/pom.xml svneol=native#text/xml ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java svneol=native#text/plain diff --git a/ximple-jobcarrier/pom.xml b/ximple-jobcarrier/pom.xml index 8ab5412..e6620d3 100644 --- a/ximple-jobcarrier/pom.xml +++ b/ximple-jobcarrier/pom.xml @@ -273,7 +273,18 @@ <artifactId>commons-collections</artifactId> <groupId>commons-collections</groupId> </dependency> - + <dependency> + <groupId>commons-digester</groupId> + <artifactId>commons-digester</artifactId> + </dependency> + <dependency> + <groupId>commons-pool</groupId> + <artifactId>commons-pool</artifactId> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> <dependency> <artifactId>log4j</artifactId> <groupId>log4j</groupId> @@ -331,6 +342,12 @@ <groupId>opensymphony</groupId> </dependency> + <dependency> + <groupId>javax.transaction</groupId> + <artifactId>jta</artifactId> + <version>1.0.1B</version> + </dependency> + <!-- Ximple Library --> <dependency> <artifactId>ximple-dgnio</artifactId> diff --git a/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java b/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java index 7e71186..f2eef84 100644 --- a/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java +++ b/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java @@ -4,9 +4,14 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; +import org.quartz.Trigger; +import org.quartz.TriggerUtils; import org.quartz.impl.StdSchedulerFactory; + +import com.ximple.eofms.jobs.OracleConvertDgn2ShpJob; /** * Hello world! @@ -25,6 +30,7 @@ public void startScheduler() { Scheduler scheduler = null; + boolean shutdown = false; try { @@ -39,7 +45,51 @@ { // deal with any exceptions logger.error(ex); + shutdown = true; + } catch (Throwable throwable) + { + logger.error(throwable.getMessage(), throwable); + shutdown = true; } + if (shutdown) + { + try + { + scheduler.shutdown(); + } catch (SchedulerException e) + { + logger.error(e.getMessage(), e); + } + } + } + + /* + * return an instance of the Scheduler from the factory + */ + public Scheduler createScheduler() throws SchedulerException + { + return StdSchedulerFactory.getDefaultScheduler(); + } + + // Create and Schedule a ScanDirectoryJob with the Scheduler + private void scheduleJob(Scheduler scheduler) throws SchedulerException + { + + // Create a JobDetail for the Job + JobDetail jobDetail = new JobDetail("ScanDirectory", Scheduler.DEFAULT_GROUP, + OracleConvertDgn2ShpJob.class); + + // Configure the directory to scan + jobDetail.getJobDataMap().put("SCAN_DIR", "c:\\quartz-book\\input"); + + // Create a trigger that fires every 10 seconds, forever + Trigger trigger = TriggerUtils.makeSecondlyTrigger(10); + trigger.setName("scanTrigger"); + // Start the trigger firing from now + trigger.setStartTime(new Date()); + + // Associate the trigger with the job in the scheduler + scheduler.scheduleJob(jobDetail, trigger); } } diff --git a/ximple-jobcarrier/src/main/resources/log4j.properties b/ximple-jobcarrier/src/main/resources/log4j.properties index e69de29..b844eb1 100644 --- a/ximple-jobcarrier/src/main/resources/log4j.properties +++ b/ximple-jobcarrier/src/main/resources/log4j.properties @@ -0,0 +1,15 @@ +# Create stdout appender +log4j.rootLogger=error, stdout + +# Configure the stdout appender to go to the Console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender + +# Configure stdout appender to use the PatternLayout +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + +# Pattern output the caller's filename and line # +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n + +# Print messages of level INFO or above for examples +log4j.logger.org.cavaness.quartzbook=INFO +log4j.logger.com.ximple.eofms=DEBUG \ No newline at end of file diff --git a/ximple-jobcarrier/src/main/resources/quartz.properties b/ximple-jobcarrier/src/main/resources/quartz.properties new file mode 100644 index 0000000..be35e19 --- /dev/null +++ b/ximple-jobcarrier/src/main/resources/quartz.properties @@ -0,0 +1,28 @@ +#=============================================================== +#Configure Main Scheduler Properties +#=============================================================== +org.quartz.scheduler.instanceName = QuartzScheduler +org.quartz.scheduler.instanceId = AUTO + +#=============================================================== +#Configure ThreadPool +#=============================================================== +org.quartz.threadPool.threadCount = 5 +org.quartz.threadPool.threadPriority = 5 +org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool + +#=============================================================== +#Configure JobStore +#=============================================================== +org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore + +#=============================================================== +#Configure Plugins +#=============================================================== +org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin + +org.quartz.plugin.jobInitializer.fileName = quartz_jobs.xml + +org.quartz.plugin.jobInitializer.overWriteExistingJobs = true +org.quartz.plugin.jobInitializer.failOnFileNotFound = true +org.quartz.plugin.jobInitializer.validating=false diff --git a/ximple-jobcarrier/src/main/resources/quartz_jobs.xml b/ximple-jobcarrier/src/main/resources/quartz_jobs.xml new file mode 100644 index 0000000..0e6d50e --- /dev/null +++ b/ximple-jobcarrier/src/main/resources/quartz_jobs.xml @@ -0,0 +1,73 @@ +<?xml version='1.0' encoding='utf-8'?> + +<quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opensymphony.com/quartz/JobSchedulingData + http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd" + version="1.5"> + + <job> + <job-detail> + <name>ConvertDgn2ShpIntoDirectory</name> + <group>DEFAULT</group> + <description> + A job that convert dgn to shapefiles + </description> + <job-class> + com.ximple.eofms.jobs.OracleConvertDgn2ShpJob + </job-class> + <volatility>false</volatility> + <durability>false</durability> + <recover>false</recover> + <job-data-map allows-transient-data="true"> + <entry> + <key>SHPDATA_DIR</key> + <value>c:\temp\data</value> + </entry> + <entry> + <key>ORAHOST</key> + <value>192.168.11.119</value> + </entry> + <entry> + <key>ORAINST</key> + <value>ORCL</value> + </entry> + <entry> + <key>ORAPORT</key> + <value>1521</value> + </entry> + <entry> + <key>ORAUSER</key> + <value>spatialdb</value> + </entry> + <entry> + <key>ORAPASS</key> + <value>spatialdb000</value> + </entry> + <entry> + <key>ORGSCHEMA</key> + <value>SPATIALDB</value> + </entry> + <entry> + <key>TESTMODE</key> + <value>true</value> + </entry> + </job-data-map> + </job-detail> + + <trigger> + <simple> + <name>convertTrigger</name> + <group>DEFAULT</group> + <job-name>ConvertDgn2ShpIntoDirectory</job-name> + <job-group>DEFAULT</job-group> + <start-time>2008-03-01T18:10:00</start-time> + <!-- repeat indefinitely every 10 seconds --> + <repeat-count>0</repeat-count> + <repeat-interval>1000</repeat-interval> + <!-- <repeat-interval>72000000</repeat-interval> --> + </simple> + </trigger> + + </job> +</quartz> -- Gitblit v0.0.0-SNAPSHOT