這是我第一次在這裏發表問題,我會盡量讓我的問題儘可能清楚。什麼是開發Java webapps最有效的方式?或者更具體地說,Wicket應用程序?
我嘗試找到開發Java webapps的最佳流程。經過試驗和錯誤的幾個月,我的Web開發環境是由由以下部分組成:
框架:阿帕奇檢票1.4.16
IDE:Eclipse的伽利略,與m2eclipse插件
構建工具:Maven的2
數據交通:2.1.1的EclipseLink通過JPA 2.0(含StaticWeave)
RDBMS:MSSQL 2005或以上JTDS
DI:谷歌吉斯2.0
開發Web容器:嵌入的Maven插件碼頭Jetty服務器。
目標web容器:Tomcat 6.x或更高版本
我使用maven Jetty插件來測試運行我的webapps,啓用JPDA,同時需要行精度跟蹤。
每當對源代碼進行更改時,我必須重新加載我的應用才能生效。按回車重新加載是好的,但經過多次重新加載(大約3~5取決於我的PermGen設置),OutOfMemoryException被拋出,比我不得不關閉並再次啓動我的應用程序。我知道自動重新加載可以通過配置來實現,但它只會導致OOME更快(由於重新加載過多)。
谷歌搜索後,我意識到有一些內存泄漏問題。我嘗試過放大MaxPermSize設置,但是我的裝備上的內存是有限的,而且設置一個非常大的內存是不合理的。順便說一句,內存泄漏檢測是在Tomcat 7中引入的,我發現大多數內存泄漏來自jTDS,Google Guice和Wicket本身,但我無能爲力。
我能做些什麼來加速我的發展進程嗎?爲了減少重新載入次數,我應該轉向更高級的Web容器,比如Glassfish(抱歉,我買不起WebLogic或WebSphere)或任何其他東西。
在此先感謝,歡迎任何評論!
我使用JRebel(http://www.zeroturnaround.com/jrebel/),它確實有很大的幫助。我現在仍然需要重新啓動服務器,但大部分更改都是正常工作的。它非常適合像Wicket這樣以Java爲中心的框架。如果您可以使用「黑客」版本的JDK進行開發,您也可以嘗試DCEVM(http://ssw.jku.at/dcevm/)。 – tetsuo 2011-04-22 13:01:03
OMG .... 我從來不知道之前有類似JRebel或DCEVM的東西! 我迫不及待地嘗試這些解決方案,但它是家庭週末! 非常感謝!我會在工作日檢查這些! – mickey 2011-04-22 13:57:02
@tetsuo 順便說一句,爲什麼我不能將你的評論標記爲「答案」? – mickey 2011-04-22 15:49:45