在struts 2 Web应用程序中使用timer api自动发送邮件错误

时间:2014-06-18 05:21:29

标签: java multithreading email timer struts2

我正在开发 Struts2网络应用程序,目前的任务是以CSV,EXCEL,PDF格式发送自动邮件。 我启动了Timer api来发送自动邮件(可以安排任务以便将来执行)。

所有格式都已准备就绪,但发送邮件时收到错误,因为 HttpServletRequest 对象在run()方法内部给出了null值。

  

HttpServletRequest request = ServletActionContext.getRequest();

我需要获取请求对象以在发送邮件时获取语言和会话。 这是我的班级(我使用谷歌guice注入服务)

public class MailTimerTask extends TimerTask{

private final Utility mails;
private final MailService mailsrv;

private MailTimerTaskBean taskbean = new MailTimerTaskBean();

@Inject
MailTimerTask(Utility mails, MailService mailsrv) {
  this.mails= mails;
  this.mailsrv= mailsrv;
}

public void run() {
   System.out.println("Mails-- Start");
   mailList();
   System.out.println("Mails-- Finished");
}

   public void mailList() {
ByteArrayOutputStream outputStream = null;

    HttpServletRequest request = ServletActionContext.getRequest(); // ERROR request object

  for (Customer customer : taskbean.getPdfBean().getListCustomers()) {
   outputStream = crt.generateOutputStream(taskbean, customer.getIdCustomer());
    if (outputStream != null) {
    MailBean mailBean = setMailBean(request, customer, outputStream, taskbean.getSite());
            mailsrv.sentMail(mailBean);
         }
     }
 }

  public MailTimerTaskBean getMailtimertaskbean() {
   return taskbean;
   }

 public void setMailtimertaskbean(MailTimerTaskBean mailtimertaskbean) {
this.taskbean = mailtimertaskbean;
  }

我也尝试过使用Bean中的传递请求对象(在本例中为taskbean),通过这样做我得到了请求对象,但会话为空

不知道为什么请求对象变为null?使用 ServletActionContext

如果有人可以建议我发送自动邮件的其他api,那会有帮助吗?

谢谢。

0 个答案:

没有答案