0
我試圖混淆Quartz JobStoreCMT並使用Spring的數據源作爲託管數據源。下面是與數據源定義我的Spring的配置文件:使用Spring datasource配置Quartz CMT jobStore
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${database.driverClassName}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}" />
</bean>
這裏是我的quartz.properties:
org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreCMT
org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties: false
org.quartz.jobStore.dataSource = managedTXDS
org.quartz.jobStore.nonManagedTXDataSource = qzDS
org.quartz.jobStore.tablePrefix: QRTZ_
org.quartz.jobStore.isClustered: false
#============================================================================
# Configure Datasources
#============================================================================
org.quartz.dataSource.managedTXDS.jndiURL=java:comp/env/jdbc/dataSource
org.quartz.dataSource.qzDS.driver: com.mysql.jdbc.Driver
org.quartz.dataSource.qzDS.URL: jdbc:mysql://localhost:3306/myschema
org.quartz.dataSource.qzDS.user: user
org.quartz.dataSource.qzDS.password: pwd
org.quartz.dataSource.qzDS.maxConnections: 5
org.quartz.dataSource.qzDS.validationQuery=select 0 from dual
當我運行嘗試初始化調度程序,我發現了以下錯誤我的單元測試:
2011-07-20 21:38:22,477 [main] ERROR org.quartz.utils.JNDIConnectionProvider - Error looking up datasource: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
...
org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'managedTXDS': java.sql.SQLException: Could not retrieve datasource via JNDI url 'java:comp/env/jdbc/dataSource' javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial [See nested exception: java.sql.SQLException: Could not retrieve datasource via JNDI url 'java:comp/env/jdbc/dataSource' javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:726)
at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:231)
所以,這是與指定org.quartz.dataSource.managedTXDS.java.naming.factory.initial和/或org.quartz.dataSource.managedTXDS.jndiURL = java的一個問題:COMP /烯v/jdbc/dataSource?
如果是缺少的JNDI工廠設置 - Spring的值應該是多少?
謝謝! 濱海
感謝您的建議。我試了一下,現在確實進一步了。我得到的下一個錯誤是:實際上,請單獨發佈我的答案 - 很難在評論中添加所有格式化的代碼和文本... – Marina
不需要,因爲從以上鍊接:「將使用此JobStore如果SchedulerFactoryBean的「dataSource」屬性已設置。「 –