- daquan198163
- 等级:


- 性别:

- 文章: 973
- 积分: 1061
- 来自: 吉林->北京->上海

|
虽然之前有人讨论过几次了,如http://www.javaeye.com/post/198914
但是根据的也只是opensymphony其官方说法
我今天按照官方文档http://wiki.opensymphony.com/display/QRTZ1/ConfigJDBCJobStoreClustering配置了一下
却总是不能成功,报错如下
java 代码
- Caused by:
- org.quartz.JobPersistenceException: Couldn't retrieve trigger: ORA-00942: 表或视图不存在
- [See nested exception: java.sql.SQLException: ORA-00942: 表或视图不存在
- ]
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1508)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1484)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport$10.execute(JobStoreSupport.java:1476)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3662)
- at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java:93)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeWithoutLock(JobStoreSupport.java:3567)
- at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1473)
- at org.quartz.core.QuartzScheduler.getTrigger(QuartzScheduler.java:1306)
- at org.quartz.impl.StdScheduler.getTrigger(StdScheduler.java:563)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.addTriggerToScheduler(SchedulerFactoryBean.java:828)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.registerJobsAndTriggers(SchedulerFactoryBean.java:770)
- at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:593)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1062)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1029)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:420)
- at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
- at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287)
- at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348)
- at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
- at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
- at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
- at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
- at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
- at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)
- at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
- at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
- at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
- at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
- at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
- at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701)
- at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
- at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
- at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
- at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
- at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
- at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
- at org.apache.catalina.core.StandardService.start(StandardService.java:480)
- at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
- at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:324)
- at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
- at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
quartz.properties如下
java 代码
- #============================================================================
- # Configure Main Scheduler Properties
- #============================================================================
- org.quartz.scheduler.instanceName = MyClusteredScheduler
- org.quartz.scheduler.instanceId = AUTO
- #============================================================================
- # Configure ThreadPool
- #============================================================================
- org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
- org.quartz.threadPool.threadCount = 25
- org.quartz.threadPool.threadPriority = 5
- #============================================================================
- # Configure JobStore
- #============================================================================
- org.quartz.jobStore.misfireThreshold = 60000
-
- org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
- org.quartz.jobStore.useProperties = false
- org.quartz.jobStore.dataSource = myDS
- org.quartz.jobStore.tablePrefix = QRTZ_
-
- org.quartz.jobStore.isClustered = true
- org.quartz.jobStore.clusterCheckinInterval = 20000
-
- #============================================================================
- # Configure Datasources
- #============================================================================
- org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
- org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@127.0.0.1:1521:VVV
- org.quartz.dataSource.myDS.user = aaa
- org.quartz.dataSource.myDS.password = aaa
- org.quartz.dataSource.myDS.maxConnections = 5
- org.quartz.dataSource.myDS.validationQuery=select 0 from QRTZ_LOCK
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
| 返回顶楼 |
|
|
- daquan198163
- 等级:


- 性别:

- 文章: 973
- 积分: 1061
- 来自: 吉林->北京->上海

|
需要事先在数据库建好什么表或Trigger吗?
|
| 返回顶楼 |
|
|
- robbin
- 等级:


- 性别:

- 文章: 5120
- 积分: 1725
- 来自: 上海

|
quartz可以群集,但是我是不建议把quatrz集成到web应用当中去的。我推荐的方式是quartz单独启动JVM作为job server来运行,如果job负载极重,可以在多台机器上面启动job server,这n个job server进行群集部署。
|
| 返回顶楼 |
|
|
- daquan198163
- 等级:


- 性别:

- 文章: 973
- 积分: 1061
- 来自: 吉林->北京->上海

|
到底怎么集群呢? 官方文档讲的也很不清楚啊 http://wiki.opensymphony.com/display/QRTZ1/ConfigJDBCJobStoreClustering
|
| 返回顶楼 |
|
|
- Godlikeme
- 等级:


- 性别:

- 文章: 1130
- 积分: 714
- 来自: BJ

|
robbin 写道 quartz可以群集,但是我是不建议把quatrz集成到web应用当中去的。我推荐的方式是quartz单独启动JVM作为job server来运行,如果job负载极重,可以在多台机器上面启动job server,这n个job server进行群集部署。
强烈同意,对此问题也非常关注,robbin能否对技术细节说的详细些。
|
| 返回顶楼 |
|
|
- WinLive
- 等级: 初级会员

- 性别:

- 文章: 83
- 积分: 10
- 来自: 北京

|
Trigger当然得有了
JobDetail,是要执行的任务的调用
CronTrigger,是设置时间的
|
| 返回顶楼 |
|
|
- daquan198163
- 等级:


- 性别:

- 文章: 973
- 积分: 1061
- 来自: 吉林->北京->上海

|
WinLive 写道 Trigger当然得有了
JobDetail,是要执行的任务的调用
CronTrigger,是设置时间的
非集群的quartz我已经配置好了的,这里说的Trigger是数据库触发器
|
| 返回顶楼 |
|
|
- lee5593
- 等级: 初级会员

- 文章: 25
- 积分: 52

|
robbin 写道 quartz可以群集,但是我是不建议把quatrz集成到web应用当中去的。我推荐的方式是quartz单独启动JVM作为job server来运行,如果job负载极重,可以在多台机器上面启动job server,这n个job server进行群集部署。
我也赞同这个观点,不过在具体的实施中有个疑惑:跨JVM怎么调用原应用中业务层的服务呢?重新将业务层级以下的应用在JobServer上再部署一遍吗?
|
| 返回顶楼 |
|
|