JSP Struts/Hibernate アプリケーションの別の Java ファイルに Quartz スケジューラを組み込みました。私のexecuteメソッドは以下のようになります:
public void execute(JobExecutionContext jExeCtx) throws JobExecutionException {
try {
userDetailManager = new UserDetailManagerImpl();
userDetailManager.sendMailTxnDetailsEveryNight();
} catch (ApplicationException ex) {
java.util.logging.Logger.getLogger(JobClass.class.getName()).log(Level.SEVERE, null, ex);
}
}
次に、sendMailTxnDetailsEveryNight メソッドを呼び出すと、次のようになります。
public void sendMailTxnDetailsEveryNight() throws ApplicationException{
List<RemittanceTransactionBean> rBean = remittanceTransactionDao.getTodayTxnSummary();
return rBean;
}
指定された時点で nullpointerException を取得しています:
java.lang.NullPointerException
at com.mtmrs.business.user.impl.UserDetailManagerImpl.sendMailTxnDetailsEveryNight(UserDetailManagerImpl.java:754)
at com.mtmrs.util.common.JobClass.execute(JobClass.java:44)
getTodayTxnSummary(); を呼び出すにはどうすればよいですか? エラーが発生しないように。applicationContext にも remittanceTransactionDao を定義しました。
<bean id="userDetailManager" parent="abstractTxDefinition">
<property name="target">
<bean class="com.mtmrs.business.user.impl.UserDetailManagerImpl">
<property name="remittanceTransactionDao" ref="remittanceTransactionDao"></property>
</bean>
</property>
</bean>
デバッグを試みたところ、remittanceTransactionDao が null であることがわかりました。メソッド remittanceTransactionDao を呼び出す前に、以下の設定も試しました。このように、sendMailTxnDetailsEveryNight で使用しているセッション変数は null です。私はここで立ち往生しています。
remittanceTransactionDao = new RemittanceTransactionDaoHibernate(RemittanceTransaction.class);