我试图使用带有石英的LocalTaskExecutorThreadPool但是当我尝试将它用作石英taskexecutor时,我得到了这个错误。
ERROR:
arg.springframework.beans.TypeMismatchException:无法转换类型的属性值 [org.springframework.scheduling.quartz.LocalTaskExecutorThreadPool]为属性'taskExecutor'所需的类型[org.springframework.core.task.TaskExecutor]。
Spring Config
<bean id="taskExecutor" class="org.springframework.scheduling.quartz.LocalTaskExecutorThreadPool">
</bean>
<bean id="schedulerTarget" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" scope="singleton" lazy-init="false">
<property name="applicationContextSchedulerContextKey">
<value>applicationContext</value>
</property>
<property name="dataSource">
<ref bean="dataSrcBean"/>
</property>
<property name="transactionManager">
<ref bean="txManager" />
</property>
<property name="taskExecutor">
<ref bean="taskExecutor" />
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.jobStore.class">org.springframework.scheduling.quartz.LocalDataSourceJobStore</prop>
<prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.MSSQLDelegate</prop>
<prop key="org.quartz.jobStore.selectWithLockSQL">SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ?</prop>
<prop key="org.quartz.plugin.shutdownhook.class">org.quartz.plugins.management.ShutdownHookPlugin</prop>
<prop key="org.quartz.plugin.shutdownhook.cleanShutdown">true</prop>
<prop key="org.quartz.scheduler.instanceName">Sched1</prop>
<prop key="org.quartz.scheduler.instanceId">1</prop>
<prop key="org.quartz.scheduler.rmi.export">false</prop>
<prop key="org.quartz.scheduler.rmi.proxy">false</prop>
</props>
</property>
</bean>
这样做的全部目的是让Spring控制石英制造的任何连接。我已经有一个Spring事务管理器供调度程序使用,但似乎调度程序将在我的数据库上保留睡眠连接。
Thnaks
答案 0 :(得分:2)
您不应自己使用LocalTaskExecutorThreadPool
- SchedulerFactoryBean
在内部使用此功能将TaskExecutor
包裹在Quartz的ThreadPool
界面中。
SchedulerFactoryBean
期望注入taskExecutor
个对象。您需要确定要使用的TaskExecutor
的哪个实现。