Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java struts 2 web应用程序中使用计时器api的自动邮件发送错误_Java_Multithreading_Email_Timer_Struts2 - Fatal编程技术网

Java struts 2 web应用程序中使用计时器api的自动邮件发送错误

Java struts 2 web应用程序中使用计时器api的自动邮件发送错误,java,multithreading,email,timer,struts2,Java,Multithreading,Email,Timer,Struts2,我正在开发一个Struts2 web应用程序,目前的任务是以CSV、EXCEL、PDF格式发送自动邮件。 我启动了计时器api来发送自动邮件(它可以为将来的执行安排任务) 所有格式都准备好了,但是我在发送邮件时出错,因为HttpServletRequest对象在run()方法中给我空值 HttpServletRequest=ServletActionContext.getRequest() 我需要获取请求对象,以便在发送邮件时获取语言和会话。 这是我的课程(我正在使用GoogleGuice注入服

我正在开发一个Struts2 web应用程序,目前的任务是以CSV、EXCEL、PDF格式发送自动邮件。 我启动了计时器api来发送自动邮件(它可以为将来的执行安排任务)

所有格式都准备好了,但是我在发送邮件时出错,因为HttpServletRequest对象在run()方法中给我空值

HttpServletRequest=ServletActionContext.getRequest()

我需要获取请求对象,以便在发送邮件时获取语言和会话。 这是我的课程(我正在使用GoogleGuice注入服务)

我还尝试过在Bean中传递请求对象(在本例中为taskbean),通过这样做,我获得了请求对象,但会话为null

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

如果有人能给我推荐其他发送自动邮件的api,我会很有帮助的


谢谢。

读一下:是的。意味着我不能在这里使用ServletActionContext?。现在我已经实现了ServletRequestAware,并从上一页设置了请求。但我得到的会话为空。抱歉,我不明白。如果这是一个自动任务,那么您正在谈论哪个请求和会话?;)事实上,我已经使用了两种不同语言的邮件正文部分免费标记temple,例如英语和德语,模板文件夹位于web目录中。因此,每次在发送邮件之前发送时,它都会通过请求检查语言,并通过使用request.getSession().getServletContext().getRealPath(邮件)的会话找到文件夹路径(其中包含免费标记模板)。(我创建了一个通用类,用于使用模板发送邮件)
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;
  }