当前位置: 代码迷 >> java >> 网络上N个不同节点的Java Spring Framework + Quartz集群
  详细解决方案

网络上N个不同节点的Java Spring Framework + Quartz集群

热度:86   发布时间:2023-08-02 11:15:16.0

我正在执行以下操作-org.quartz.impl.jdbcjobstore.LockException:无法获取数据库行锁:ORA-00942:表或视图不存在[请参见嵌套异常:java.sql.SQLException:ORA-00942:表或视图不存在 ]。

我已经使用了相同的代码,但是数据库是Mysql ,但是突然之间,我们决定将数据库迁移到ORACLE。

而且我们从Java方面超越了Exception。

根据我的观点,我认为当最初的作业运行时,它将在数据库表中输入以下条目:PREFIX_LOCKS

STATE_ACCESS TRIGGER_ACCESS

自动,但是由于ORA-00942,它在这里尝试失败。

现在,我的Quartz Config文件如下所示:

#=====================================
# Configure Instance
#=====================================

    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.tablePrefix = TABLE_PREFIX_NAME

    org.quartz.jobStore.dataSource = customDataSourceName

    org.quartz.jobStore.isClustered = true

    org.quartz.jobStore.clusterCheckinInterval = 20000

#===================================
# Configure Datasources  
#====================================

    org.quartz.dataSource.customDataSourceName.jndiURL =
    java:comp/env/jdbc/SomeName

    org.quartz.dataSource.customDataSourceName.maxConnections = 5

    org.quartz.dataSource.customDataSourceName.validationQuery = 
    select 0 from dual

#================== END OF FILE ==========

注意:我的Oracle数据库具有石英和oracle数据库所需的所有足够的表,并已分配到Schema明智的数据库中(可能是原因)。

有人能告诉我发生了什么事吗?

这个问题解决了。

问题是,我试图在schedule(..)方法之前调用Scheduler的start()方法。 我只是交换那个命令,然后同样地做,

1. schedule job
2. start method invoke

以上两种情况都包含在try .. catch中。

谢谢。

  相关解决方案