ローカルホストでアプリケーションを実行すると問題が発生します。私のアプリケーションは、春のWeb MVCで構築し、データベースへの接続パスとして@Autowired DataSourceを使用するTomcatベースのアプリケーションです。それに私はJavaクォーツで動作するアプリの機能があります。Java Quartz + Spring WEBはデータソースをロードできません
DataJdbc1.class:
@Repository
public class DataJdbc1 implements Data {
@Autowired
public DataSource dataSource1;
public JdbcTemplate jdbc1;
@Autowired
public DataSource dataSource2;
public JdbcTemplate jdbc2;
public void setDataSource1(DataSource dataSource1) {
this.dataSource1 = dataSource1;
}
public void setDataSource2(DataSource dataSource2) {
this.dataSource2 = dataSource2;
}
}
アプリケーションのcontext.xml:
<bean id="dataSource1" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/xxx" />
</bean>
<bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource1" />
</bean>
<bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/xxx2" />
</bean>
<bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource2" />
</bean>
CopyTableCustomerHandleJob.class
public class CopyTableCustomerHandleJob extends QuartzJobBean{
@Autowired
QuartzServicesFactoryDao quartzServicesFactoryDao;
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
try {
quartzServicesFactoryDao = new QuartzServicesFactoryDaoImpl();
quartzServicesFactoryDao.getCopyTableCustomerHandle();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
石英のcontext.xml:
<!-- job -->
<bean name="copyTableCustomerHandleJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="crm.spring.main.quartz.CopyTableCustomerHandleJob"/>
<property name="jobDataMap">
<map>
<entry key="quartzServicesFactoryDao" value-ref="quartzServicesFactoryDao"/>
</map>
</property>
<property name="durability" value="true" />
その後
<!-- trigger -->
<bean id="copyTableCustomerHandleJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="copyTableCustomerHandleJob"/>
<property name="cronExpression" value="0 0/1 * * * ?"/>
</bean>
<!-- SchedulerFactoryBean -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="copyTableCustomerHandleJob" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="copyTableCustomerHandleJobTrigger" />
</list>
</property>
</bean>
、私は仕事のクラス、トリガークラス、schedulefactoryで春のWEB MVC内部その石英アプリケーションを構築することを決定すると、残念ながら石英のcontext.xmlを作成し、この石英アプリケーションを実行すると、私は問題を抱えている、I Quartzアプリケーションを実行するたびにDataSourceプロパティを初期化することはできません。しかし、奇妙なことに私がspring webMVC RequestMapping DataSourceで石英アプリケーションメソッドを呼び出そうとしていると、それは正常に初期化されました。
stackoverflowメンバーの誰も私と同様の問題に直面していたのですか?私の問題を解決するためにどのような解決策を講じなければならないのか。どうもありがとうございました。
代わりにsprings quartzモジュールを使用する必要があります。 – ScanQR