java - 空指针异常 Quartz 与 Spring 集成

标签 java mysql spring hibernate quartz-scheduler

正在从事 Spring Hibernate 项目 我正在尝试连接到数据库并从quartzjob 中获取值。但我收到空指针异常。当我尝试使用 ApplicationContext 对象并获取它连接到数据库的 bean 时。为什么我无法以其他方式执行

public class JobScheduler extends QuartzJobBean {
    @Autowired
    private SourceDaoImpl sourceDao;
    @Override
    protected void executeInternal(JobExecutionContext arg0)
            throws JobExecutionException {
        Client client = new Client();
        client.setClientKey(300);

        sourceDao.getSourceByClient(client); **//error**
    }
    public SourceDaoImpl getSourceDao() {
        return sourceDao;
    }
    public void setSourceDao(SourceDaoImpl sourceDao) {
        this.sourceDao = sourceDao;
    }
}

这是我的applicationcontext.xml

<!-- scheduler -->
<bean id="jobScheduler" class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="com.dca.scheduling.JobScheduler" />
    <property name="jobDataAsMap">
        <map>
            <entry key="timeout" value="5" />
        </map>
    </property>
</bean>
<bean id="cronTriggerjobScheduler" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="jobScheduler" />
    <property name="cronExpression" value="0/10 * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="jobDetails">
        <list>
            <ref bean="jobScheduler" />
        </list>
    </property>
    <property name="triggers">
        <list>
            <ref bean="cronTriggerjobScheduler" />
        </list>
    </property>
</bean>

<bean id="jobClass"
    class="com.dca.scheduling.JobScheduler">

</bean>

这是异常(exception)

ERROR 04-06 07:22:55,009 - Job DEFAULT.jobScheduler threw an unhandled Exception: 
java.lang.NullPointerException
    at com.dca.scheduling.JobScheduler.executeInternal(JobScheduler.java:21)
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
ERROR 04-06 07:22:55,010 - Job (DEFAULT.jobScheduler threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.NullPointerException]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:227)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: java.lang.NullPointerException
    at com.dca.scheduling.JobScheduler.executeInternal(JobScheduler.java:21)
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
    ... 1 more

hibernate .xml

<bean id="sourceInstanceDao" class="com.dca.dao.impl.SourceInstanceDaoImpl">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>

最佳答案

Quartz 在它自己的上下文中运行,即使是由 Spring 便捷方法启动的,所以实际上你最终不会获得整个 Spring 应用程序上下文,除非你显式地在 JobDataMap 中传递 bean

<bean id="jobScheduler" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.vxl.appanalytix.dca.scheduling.JobScheduler" />
        <property name="jobDataAsMap">
            <map>
              <entry key ="sourceDao" value-ref="sourceDao"/>
              <entry key="timeout" value="5" />
            </map>
        </property>
    </bean>

我的作业调度程序类

protected void executeInternal(JobExecutionContext jobContext)
            throws JobExecutionException {
        Client client = new Client();
        client.setClientKey(300);
        sourceDao= (SourceDaoImpl) jobContext.getJobDetail()
                .getJobDataMap().get("sourceDao");
}

关于java - 空指针异常 Quartz 与 Spring 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916788/

相关文章:

java - 无法运行 .jar 文件

java - 哪些情况下实际使用了finalize()?

java - Tomcat 运行但在尝试访问我的 html 时给出 404,但在安装后显示 tomcat 的默认页面

PHP MySQL : Better Way to Update tag system

php - 导入逗号分隔的文件到mysql

mysql - 在 Symfony 2.5 和 Doctrine 查询生成器中使用圆括号 ( > )

java - 如何解决 Java 中的事务日志?

java - Spring Zuul 网关 - 带有 Spring Cache Redis

java - 测试中未抛出 MaxUploadSizeExceededException

java - 如何使用java spring boot应用程序制作持久的JMS消息?