这是我第一次在这里发布问题,我会尽力让我的问题尽可能清楚。
我尝试寻找开发 Java Web 应用程序的最佳流程。经过几个月的反复试验,我的Web开发环境由以下部分组成:
框架:Apache Wicket 1.4.16
IDE:eclipse Galileo,带有 m2eclipse 插件
构建工具:Maven 2
数据访问:通过 JPA 2.0 的 EclipseLink 2.1.1(使用 StaticWeave)
RDBMS:带有 jTDS 的 MSSQL 2005 或更高版本
DI:Google Guice 2.0
开发 Web 容器:嵌入 Maven Jetty 插件的 Jetty 服务器。
目标Web容器:Tomcat 6.x或更高版本
我使用maven Jetty插件来测试运行我的web应用程序,在需要线路精确跟踪时启用JPDA。
每当对源代码进行更改时,我都必须重新加载我的应用程序才能生效。按 ENTER 重新加载是可以的,但是经过几次重新加载(大约 3~5 次取决于我的 PermGen 设置),抛出 OutOfMemoryException ,然后我必须关闭并再次启动我的应用程序。我知道自动重新加载可以通过配置来实现,但这只会导致 OOME 更快(由于过度重新加载)。
谷歌搜索后我意识到存在与一些内存泄漏问题相关的问题。我尝试过放大 MaxPermSize 设置,但我的设备上的 RAM 有限,并且设置为非常大的值是不合理的。顺便说一句,Tomcat 7 中引入了内存泄漏检测,我发现大多数内存泄漏都来自 jTDS、Google Guice 和 Wicket 本身,但我对此无能为力。
我可以做些什么来加速我的开发过程吗?为了减少重新加载时间,我应该转向更高级的 Web 容器,如 Glassfish(抱歉,我在这里买不起 WebLogic 或 WebSphere。)或其他东西。
预先感谢,欢迎任何意见!
最佳答案
我使用JRebel ,确实有很大帮助。我仍然需要时不时地重新启动服务器,但大多数更改都可以正常工作。它非常适合像 Wicket 这样以 Java 为中心的框架。您也可以尝试DCEVM ,如果您可以使用“破解”版本的 JDK 进行开发。
关于java - 开发 Java Web 应用程序最有效的方法是什么?或者更具体地说,比如 Wicket 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752968/