论坛首页 Java版 企业应用

Quartz到底能不能集群??

浏览 1605 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-04-12
虽然之前有人讨论过几次了,如http://www.javaeye.com/post/198914
但是根据的也只是opensymphony其官方说法
我今天按照官方文档http://wiki.opensymphony.com/display/QRTZ1/ConfigJDBCJobStoreClustering配置了一下
却总是不能成功,报错如下
java 代码
 
  1. Caused by:   
  2. org.quartz.JobPersistenceException: Couldn't retrieve trigger: ORA-00942: 表或视图不存在  
  3.  [See nested exception: java.sql.SQLException: ORA-00942: 表或视图不存在  
  4. ]  
  5.     at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1508)  
  6.     at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1484)  
  7.     at org.quartz.impl.jdbcjobstore.JobStoreSupport$10.execute(JobStoreSupport.java:1476)  
  8.     at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3662)  
  9.     at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java:93)  
  10.     at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeWithoutLock(JobStoreSupport.java:3567)  
  11.     at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1473)  
  12.     at org.quartz.core.QuartzScheduler.getTrigger(QuartzScheduler.java:1306)  
  13.     at org.quartz.impl.StdScheduler.getTrigger(StdScheduler.java:563)  
  14.     at org.springframework.scheduling.quartz.SchedulerFactoryBean.addTriggerToScheduler(SchedulerFactoryBean.java:828)  
  15.     at org.springframework.scheduling.quartz.SchedulerFactoryBean.registerJobsAndTriggers(SchedulerFactoryBean.java:770)  
  16.     at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:593)  
  17.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1062)  
  18.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1029)  
  19.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:420)  
  20.     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)  
  21.     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)  
  22.     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)  
  23.     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)  
  24.     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287)  
  25.     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348)  
  26.     at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)  
  27.     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)  
  28.     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)  
  29.     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)  
  30.     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)  
  31.     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)  
  32.     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)  
  33.     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)  
  34.     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)  
  35.     at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)  
  36.     at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)  
  37.     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701)  
  38.     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)  
  39.     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)  
  40.     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)  
  41.     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)  
  42.     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)  
  43.     at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)  
  44.     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)  
  45.     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)  
  46.     at org.apache.catalina.core.StandardService.start(StandardService.java:480)  
  47.     at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)  
  48.     at org.apache.catalina.startup.Catalina.start(Catalina.java:556)  
  49.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  50.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
  51.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
  52.     at java.lang.reflect.Method.invoke(Method.java:324)  
  53.     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)  
  54.     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)  

quartz.properties如下
java 代码
 
  1. #============================================================================  
  2. # Configure Main Scheduler Properties    
  3. #============================================================================  
  4. org.quartz.scheduler.instanceName = MyClusteredScheduler  
  5. org.quartz.scheduler.instanceId = AUTO  
  6. #============================================================================  
  7. # Configure ThreadPool    
  8. #============================================================================  
  9. org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool  
  10. org.quartz.threadPool.threadCount = 25  
  11. org.quartz.threadPool.threadPriority = 5  
  12. #============================================================================  
  13. # Configure JobStore    
  14. #============================================================================  
  15. org.quartz.jobStore.misfireThreshold = 60000  
  16.   
  17. org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX  
  18. org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate  
  19. org.quartz.jobStore.useProperties = false  
  20. org.quartz.jobStore.dataSource = myDS  
  21. org.quartz.jobStore.tablePrefix = QRTZ_  
  22.   
  23. org.quartz.jobStore.isClustered = true  
  24. org.quartz.jobStore.clusterCheckinInterval = 20000  
  25.   
  26. #============================================================================  
  27. # Configure Datasources    
  28. #============================================================================  
  29. org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver  
  30. org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@127.0.0.1:1521:VVV  
  31. org.quartz.dataSource.myDS.user = aaa  
  32. org.quartz.dataSource.myDS.password = aaa  
  33. org.quartz.dataSource.myDS.maxConnections = 5  
  34. org.quartz.dataSource.myDS.validationQuery=select 0 from QRTZ_LOCK  
   
最后更新时间:2007-04-12
需要事先在数据库建好什么表或Trigger吗?
   
0 请登录后投票
最后更新时间:2007-04-12
quartz可以群集,但是我是不建议把quatrz集成到web应用当中去的。我推荐的方式是quartz单独启动JVM作为job server来运行,如果job负载极重,可以在多台机器上面启动job server,这n个job server进行群集部署。
   
0 请登录后投票
最后更新时间:2007-04-12
到底怎么集群呢?
官方文档讲的也很不清楚啊
http://wiki.opensymphony.com/display/QRTZ1/ConfigJDBCJobStoreClustering
   
0 请登录后投票
最后更新时间:2007-04-12
robbin 写道
quartz可以群集,但是我是不建议把quatrz集成到web应用当中去的。我推荐的方式是quartz单独启动JVM作为job server来运行,如果job负载极重,可以在多台机器上面启动job server,这n个job server进行群集部署。


强烈同意,对此问题也非常关注,robbin能否对技术细节说的详细些。
   
0 请登录后投票
最后更新时间:2007-04-12
Trigger当然得有了
JobDetail,是要执行的任务的调用
CronTrigger,是设置时间的
   
0 请登录后投票
最后更新时间:2007-04-13
WinLive 写道
Trigger当然得有了
JobDetail,是要执行的任务的调用
CronTrigger,是设置时间的

非集群的quartz我已经配置好了的,这里说的Trigger是数据库触发器
   
0 请登录后投票
最后更新时间:2007-04-21
robbin 写道
quartz可以群集,但是我是不建议把quatrz集成到web应用当中去的。我推荐的方式是quartz单独启动JVM作为job server来运行,如果job负载极重,可以在多台机器上面启动job server,这n个job server进行群集部署。

我也赞同这个观点,不过在具体的实施中有个疑惑:跨JVM怎么调用原应用中业务层的服务呢?重新将业务层级以下的应用在JobServer上再部署一遍吗?
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐