首先是主要問題:可以將爆炸戰爭添加/加載到獨立的Java應用程序中嗎?
我們在tomcat中有一個web應用程序,當系統試圖在12點鐘發送電子郵件時,它會重載並關閉。起初它只有數百個(並且服務器表現良好),但現在它已經成千上萬,耗盡了一切。
我們希望在不同的JVM中「運行」這些作業。爲此,我被要求創建一個獨立的應用程序,加載Spring和hibernate上下文,並調用發送電子郵件和短信的方法;並通過命令行運行。但他們想要使用駐留在tomcat服務器中的相同「戰爭」(避免任何類型的複製)。
我創建通過Eclipse應用程序,當我打運行,但它的魔力。但是當我嘗試通過命令行運行它時,我得到了一個NoClassDefFoundError,Obviouly,這要感謝ClassPath引用問題。我試圖把路徑轉到「WEB-INF」目錄,但沒有成功。如果這意味着運行這個應用程序,我們不在乎殺死可移植性。
C:\Program Files\Java\jdk1.6.0_38\bin>java -jar -cp ".;D:\powerfollowups\trunk\WebContent\WEB-INF\lib\*;D:\powerfollowups\trunk\WebContent\WEB-INF\clases" D:\powerfollowups\workspace\PFUReportSender\target\pwrFU-2.jar
我也試圖把它放在清單的類路徑,像這樣:
Manifest-Version: 1.0
Main-Class: com.powerfollowups.StandAlonePFUReportSender
Class-Path: D:\powerfollowups\trunk\WebContent\WEB-INF\lib\* D:\powerfollowups\trunk\WebContent\WEB-INF\clases
如何添加這一切到類路徑?
優化代碼現在它不是一個選項。
向我們展示如何通過命令行運行它。 – 2013-03-01 19:19:27
在數據庫中建立隊列列出所有電子郵件,然後分批處理它們? – dlp 2013-03-01 19:23:54
@dlp我提出了這個建議(批量執行),它沒有超越...... :(我們正試圖在內存中加載所有的電子郵件,最終這也不會起作用。他們分批,例如500郵件,它可能會更好。 – 2013-03-01 20:01:43