2016-12-27 24 views
0

我現在面臨一個問題,當我在本地主機上運行我的應用程序。我的應用是建立具有Spring Web MVC和使用@Autowired數據源作爲連接路徑數據庫基於Tomcat應用。除此之外,我有一個應用程序功能與Java Quartz一起使用。Java的石英+ 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和創建石英context.xml的Spring Web MVC框架內的石英應用不幸的是,我有問題,運行此應用石英時,我每次運行quartz應用程序時都無法初始化DataSource屬性。但奇怪的是,當我試圖調用帶彈簧webMVC RequestMapping數據源初始化成功與石英的應用方法。

沒有計算器成員的任何人都曾經遇到過類似的問題與我的?我必須採取什麼樣的解決方案來解決我的問題。非常感謝你。

+0

應改用彈簧石英模塊。 – ScanQR

回答