我希望在action类里新开启一个后台线程用于发送邮件,然后action类execute()方法可以立即返回,以便用户可以较快地看到响应的页面(用户也没有必要等待邮件发送的过程)。
但是似乎execute结束以后发送邮件的线程也随之被销毁了,这是怎么回事呢?是因为servlet容器的回收和销毁机制导致的吗?
请大家指点迷津

解决方案 »

  1.   

    我估计你是在execute()里面new你的邮件发送的对象的,所以当execute结束后里面的局部变量也立即自动销毁了。貌似现在的网站都是等到发邮件发送成功之后才看到响应页面的,因为也有可能邮件发到一半出错。如果这个时候你已经响应发送成功显然是不对的。
      

  2.   

    我的页面不需要显示邮件发送是否成功,所以可以让它在后台慢慢发。
    我是在execute()方法里new 的发送对象,如果是这样的话应该在哪里生成发送对象呢,放在Action属性也不行呢
    ,同样会被销毁
      

  3.   

    这样的话应该会报异常吧。比如nullpointerexception之类的。
      

  4.   

    哦,我想错了。就算多线程也还是局部变量。
    那可能就需要你弄一个与Action无关的类能够在服务启动的时候就开始自动运行不断的监测是否有邮件要发送并及时发送了。