0

我正在实施 cron 作业计划以在 Web 应用程序中发送带有附件的定期电子邮件。

问题描述: 为了在java代码中创建一个文件(将附加邮件),我需要会话对象来获取文件的绝对路径。

例如 :

request.getSession().getServletContext().getRealPath("/");

我们用来获取路径。

那么如何实现/获取会话对象呢?或者有没有其他方法可以获取文件的相对路径?

注意:我需要在 WebContent/MyFolder 中创建 attachmnet 文件。

4

2 回答 2

1

Cron 在不同的线程和不同的时间启动作业,因此在运行作业时,会话可能已经不存在。您应该使用所有参数创建 cron 作业(即作为字符串的路径)或只使用其他方法来检索路径(例如使用 java资源或显式定义的路径)。

于 2012-07-24T16:06:08.253 回答
1

您无法获得 HTTP 会话,因为 cron 作业中没有 HTTP 会话。该作业是异步的,它在自己的线程中运行,与会话没有任何关系。即使没有用户连接到您的服务器,它也会运行。

所以,你的问题实际上是如何获取文件的路径。

答案就在你的问题中。注意getServletContext(). 您可以从您的 servlet 中提取 servlet 上下文:servlet.getServletConfig().getServletContext(). 因此,如果您的应用程序中至少有一个 servlet,您可以将您的 servlet 上下文(或从中提取的更好的文件路径)放入静态变量或系统属性,然后在您的 cron 作业中使用它。

于 2012-07-24T16:06:45.180 回答