这个Quartz配置有什么不对?

时间:2016-09-09 16:59:55

标签: java transactions quartz-scheduler weblogic12c

我在WebLogic 12.1.3中运行Quartz Scheduler并由JobStoreCMT支持,但其行为与配置不匹配(见下文)。我做错了什么?

背景

Quartz具有在启动时从XML文件加载并定期运行的作业。其中一些工作产生了一次性工作。此外,还有一些由用户手动触发的作业。用户启动的作业是从具有容器管理事务的EJB完成的。

问题

  1. 作业类中的事务在作业的execute()方法中不活动。我必须调用begin / commit / rollback。因为 wrapJobExecutionInUserTransaction 设置为true,所以不应该这样做吗?这就是文档所说的内容。
  2. 文档还说明,当 XMLSchedulingDataProcessorPlugin JobStoreCMT 一起使用时, org.quartz.plugin.jobInitializer.wrapInUserTransaction 必须设置为true。但是,当我这样做时,我得到一个重复的事务异常。发生了什么事?
  3. 即使所有作业都快速运行,只要Quartz启用,WebLogic就会永远关闭。从日志看起来WebLogic正在等待事务超时。配置中的某些内容是否有助于此?
  4. 配置

    org.quartz.scheduler.skipUpdateCheck=true
    org.quartz.scheduler.instanceName=MyTaskScheduler
    org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer=true
    org.quartz.scheduler.instanceId=AUTO
    org.quartz.scheduler.wrapJobExecutionInUserTransaction=true
    org.quartz.scheduler.userTransactionURL=javax.transaction.UserTransaction
    org.quartz.scheduler.idleWaitTime=30000
    org.quartz.scheduler.dbFailureRetryInterval=15000
    org.quartz.scheduler.batchTriggerAcquisitionMaxCount=1
    org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow=0
    org.quartz.scheduler.makeSchedulerThreadDaemon=false
    
    org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount=20
    org.quartz.threadPool.threadPriority=5
    org.quartz.threadPool.makeThreadsDaemons=false
    
    org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT
    org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate
    org.quartz.jobStore.dataSource=MyDataSource
    org.quartz.jobStore.nonManagedTXDataSource=MyDataSourceNonXA
    org.quartz.jobStore.tablePrefix=QRTZ_
    org.quartz.jobStore.useProperties=false
    org.quartz.jobStore.misfireThreshold=60000
    org.quartz.jobStore.isClustered=true
    org.quartz.jobStore.clusterCheckinInterval=15000
    org.quartz.jobStore.maxMisfiresToHandleAtATime=20
    org.quartz.jobStore.txIsolationLevelSerializable=false
    org.quartz.jobStore.txIsolationLevelReadCommitted=false 
    
    org.quartz.dataSource.MyDataSource.jndiURL=MyDataSource
    org.quartz.dataSource.MyDataSource.java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
    org.quartz.dataSource.MyDataSource.java.naming.provider.url=t3://localhost:7003
    
    org.quartz.dataSource.MyDataSourceNonXA.jndiURL=MyDataSourceNonXA
    org.quartz.dataSource.MyDataSourceNonXA.java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
    org.quartz.dataSource.MyDataSourceNonXA.java.naming.provider.url=t3://localhost:7003
    
    org.quartz.plugin.jobInitializer.class=org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
    org.quartz.plugin.jobInitializer.fileNames=E:/tasks.xml
    org.quartz.plugin.jobInitializer.failOnFileNotFound=true
    org.quartz.plugin.jobInitializer.scanInterval=0
    org.quartz.plugin.jobInitializer.wrapInUserTransaction=false
    

    感谢任何帮助。

0 个答案:

没有答案