Java Quartz + Spring WEB не может загрузить источник данных

Я столкнулся с проблемой, когда запускаю свои приложения на локальном хосте. мое приложение основано на приложении tomcat, которое построено с помощью Spring Web MVC и использует @Autowired DataSource в качестве пути подключения к базе данных. кроме того, у меня есть функция приложений для работы с Java Quartz.

DataJdbc1.класс:

@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;
  }
}

приложение-контекст.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();
    }
}

кварц-контекст.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>

afterwards, I deciding to build that quartz Application inside Spring WEB MVC with Job class, Trigger Class, schedulefactory and creating quartz-context.xml unfortunately, i have problem when run this quartz application, i can't initialize DataSource property every time i running the quartz application. but strangely when I'm trying to call the quartz application method with spring webMVC RequestMapping DataSource Initialized Succesfully.

Кто-нибудь из членов stackoverflow когда-либо сталкивался с подобной проблемой с моей? какое решение я должен сделать, чтобы решить мою проблему. большое тебе спасибо.


person micropiet    schedule 27.12.2016    source источник
comment
вместо этого следует использовать пружинный кварцевый модуль.   -  person ScanQR    schedule 27.12.2016


Ответы (1)


Задание Quartz создается Quartz, а не Spring. Таким образом, вы можете использовать SpringBeanJobFactory для автоматического автоматического подключения кварцевых заданий с помощью spring.

Вам будет полезен следующий URL-адрес. Пожалуйста, проверьте это.

https://stackoverflow.com/a/15211030/7119031

person hiroyukik    schedule 08.01.2017