2013-03-01 58 views
1

首先是主要問題:可以將爆炸戰爭添加/加載到獨立的Java應用程序中嗎?

我們在tomcat中有一個web應用程序,當系統試圖在12點鐘發送電子郵件時,它會重載並關閉。起初它只有數百個(並且服務器表現良好),但現在它已經成千上萬,耗盡了一切。

我們希望在不同的JVM中「運行」這些作業。爲此,我被要求創建一個獨立的應用程序,加載Spring和hibernate上下文,並調用發送電子郵件和短信的方法;並通過命令行運行。但他們想要使用駐留在tomcat服務器中的相同「戰爭」(避免任何類型的複製)。

enter image description here

我創建通過Eclipse應用程序,當我打運行,但它的魔力。但是當我嘗試通過命令行運行它時,我得到了一個N​​oClassDefFoundError,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 

如何添加這一切到類路徑?

優化代碼現在它不是一個選項。

+0

向我們展示如何通過命令行運行它。 – 2013-03-01 19:19:27

+0

在數據庫中建立隊列列出所有電子郵件,然後分批處理它們? – dlp 2013-03-01 19:23:54

+0

@dlp我提出了這個建議(批量執行),它沒有超越...... :(我們正試圖在內存中加載所有的電子郵件,最終這也不會起作用。他們分批,例如500郵件,它可能會更好。 – 2013-03-01 20:01:43

回答

2

你需要classpath中的幾件事情:

  • WEB-INF/classes目錄 - 這包含從WAR所有的自定義類
  • 所有圖書館的罐子,你的課程從您的WAR依賴
  • 所有的罐子您的命令行應用程序依賴於

編輯:基於您的更新問題

java -jar -cp ".;D:\powerfollowups\trunk\WebContent\WEB-INF\lib\*;D:\powerfollowups\trunk\WebContent\WEB-INF\classes" D:\powerfollowups\workspace\PFUReportSender\target\pwrFU-2.jar 
+0

如何將所有這些添加到類路徑? – 2013-03-01 19:55:34

+0

我已經在你的問題中更新了我的迴應 – codelark 2013-03-01 20:19:46

+0

這沒有奏效:(可以將「資源」加載到不在jar文件中的類路徑中嗎? – 2013-03-04 13:12:29

相關問題