При закрытии tomcat я вижу, что весенние управляемые бобы уничтожаются, среди которых есть dataSource. Spring инструктирует кварц завершить работу, а Quartz работает с config waitForJobsToCompleteOnShutdown = true. Так что, когда заканчивает работу, я получаю ниже expection с кварцем, как нет DataSource для того, чтобы получить соединение:Весенние бобы уничтожены, но кварц выполняет очистку и требует данных источника для подключения и исключения исключения
2013-06-24 17:22:47,952 ERROR | schedulerFactoryBean_Worker-1 | org.quartz.core.ErrorLogger | An error occured while marking executed job complete. job= 'DEFAULT.invoiceResponseJobDetail'
org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'springNonTxDataSource.schedulerFactoryBean': java.lang.NullPointerException
at org.quartz.impl.jdbcjobstore.JobStoreCMT.getNonManagedTXConnection(JobStoreCMT.java:173) ~[quartz-2.1.7.jar:na]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3788) ~[quartz-2.1.7.jar:na]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3760) ~[quartz-2.1.7.jar:na]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggeredJobComplete(JobStoreSupport.java:3000) ~[quartz-2.1.7.jar:na]
at org.quartz.core.QuartzScheduler.notifyJobStoreJobComplete(QuartzScheduler.java:1753) ~[quartz-2.1.7.jar:na]
at org.quartz.core.JobRunShell.run(JobRunShell.java:281) ~[quartz-2.1.7.jar:na]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) ~[quartz-2.1.7.jar:na]
Caused by: java.lang.NullPointerException: null
at org.quartz.impl.jdbcjobstore.JobStoreCMT.getNonManagedTXConnection(JobStoreCMT.java:165) ~[quartz-2.1.7.jar:na]
... 6 common frames omitted
DataSource конфигурация:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/springDataSource" />
<property name="lookupOnStartup" value="true" />
<property name="proxyInterface" value="javax.sql.DataSource" />
</bean>
весна кварц конфигурация:
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean" depends-on="dataSource">
<property name="waitForJobsToCompleteOnShutdown">
<value>true</value>
</property>
<property name="triggers">
<list>
<ref bean="accountRequestJobDetailTrigger" />
</list>
</property>
<property name="schedulerContextAsMap">
<map>
<entry key="accountRequestJob" value-ref="accountRequestJob" />
</map>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreCMT</prop>
<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
</prop>
<prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
<prop key="org.quartz.jobStore.isClustered">true</prop>
<prop key="org.quartz.scheduler.instanceName">SAPClusteredScheduler</prop>
<prop key="org.quartz.scheduler.instanceId">AUTO</prop>
</props>
</property>
<property name="dataSource" ref="dataSource" />
</bean>
Как я могу позволить, чтобы эта очистка рабочих мест происходила до того, как весенние бобы были уничтожены?
Можем ли мы увидеть ваш конфиг? –
добавил конфигурацию в вопрос – user1920845