2012-07-24 97 views
0

我正在實現cron作業調度,以在Web應用程序中發送帶附件的定期電子郵件。如何獲取QuartzJobBean的子類中的會話/請求對象

問題描述: 爲了在java代碼中創建一個文件(用郵件附件),我需要session對象來獲取文件的絕對路徑。

例如:

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

我們用它來獲取路徑。

那麼我該如何實現/獲取會話對象?或者有沒有其他的方式來獲得文件的相對路徑?

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

回答

1

由於cron作業中沒有HTTP會話,因此無法獲得HTTP會話。這項工作是異步的,它在自己的線程中運行,並且與會話沒有任何關係。即使沒有用戶連接到您的服務器,它也會運行。

所以,你的問題其實是如何獲得文件的路徑。

答案就是你的問題。請注意0​​。您可以從您的servlet中提取servlet上下文:servlet.getServletConfig().getServletContext()。因此,如果您的應用程序中至少有一個servlet,則可以將servlet上下文(或從中提取更好的文件路徑)放到靜態變量或系統屬性中,然後在您的cron作業中使用它。

+0

其實我是新的春天,所以你可以告訴我如何獲得servlet對象? – 2012-07-25 05:17:13

1

Cron在不同的線程和不同的時間啓動作業,然後作業運行,會話可能已經不存在。您應該使用所有參數(即路徑作爲字符串)或使用其他方法來檢索路徑(例如使用java resources或顯式定義的路徑)來創建cron作業。

相關問題