石英作业是否了解应用程序中的其他包/类?

时间:2015-06-26 14:30:48

标签: java tomcat quartz-scheduler

我的石英工作看起来像这样。

public class EmailJob implements Job{
/** */
private DashboardDaoImpl dashboardDAO = new DashboardDaoImpl();  
/** */
private static Logger log = Logger.getLogger("com.tapestrysolutions.gwt.predictivelogistics.relevanceengine.server.scheduler.EmailJob");
/** */
private UserDao userDao = new JdbcUserDaoImpl();


public void execute(JobExecutionContext context) throws JobExecutionException      
      {      
        log.info("EmailJob executing");
        EmailNewsSummary email = dashboardDAO.getFilteredArticlesSummary(EmailNewsSummary.cutoffDate());
        EmailNewsBuilder builder = new EmailNewsBuilder(email);
        sendEmailNews(builder.getEmail());
        log.info("email sent");

      } 

/**
 * Sends content to subscribed users
 * @param content
 */
public void sendEmailNews(String content) {
    //sends email
}

}

当调度程序运行作业时,没有任何反应。当我检查tomcat日志时,记录的唯一内容是" EmailJob正在执行",这是第一个语句。 getFilteredArticlesSummary()内部的第一件事是print语句,所以我知道它没有执行。

有趣的是,我可以通过用一个硬编码的电子邮件字符串替换builder.getEmail()来规避这些方法,并正确发送电子邮件。

这让我相信这个工作实例(EmailJob)不知道我作为实例变量启动的dashboardDAO和userDao。这些对象访问我的sql server并返回数据,它们位于其他包中。如果是这种情况,那么EmailJob如何知道记录器?是因为我宣布它是静态的吗?

0 个答案:

没有答案