我对 Java EE 很陌生,一直在为部署过程的缓慢而苦苦挣扎,并想知道我是否做错了什么。我对 Django 有丰富的经验,其中代码的更改会立即发生,而且似乎热部署 Java EE 应用程序有点令人困惑——有多种东西声称可以热部署(Glassfish、Eclipse manic hotdeploy、Jetty hotdeploy、JRebel 等)。 )。
我的项目是一个 Maven 项目,我使用 Netbeans 进行部署。该站点使用 Spring、JSF 和 Hibernate 框架。
In Netbeans, Deploy on Save, according to the following screenshot seems to be enabled, but clicking/unclicking is not possible since it claims to get the info from my pom.xml (though there is no such field in my pom.xml (only dependencies)).
现在,对某些文件的更改似乎立即生效。这些包括:
- JSF 文件
- 静态文件
对以下内容的更改需要部署:
- 任何 XML 文件
- 任何属性文件,甚至本地化属性文件
- 任何java文件
对这些的更改需要我部署manually重新部署需要半分钟,尽管我目前只有 2-3 个类,基本上是一个用户类和一个授权类。该项目目前只允许登录,尽管如此,编译大约需要几秒钟;并且容器(Glassfish)似乎消耗了大约 600 MB 的 RAM,甚至在几次部署后出现 PermGen 错误,我需要使用任务管理器终止 java 进程。 (我读到这与每次重新部署后垃圾收集器泄漏有关,我什至使用 jhat 生成配置文件,但出现了数千个类的列表,我的类、Spring、Hibernate 类等。)
我也听说过 jrebel,并尝试运行它,但它似乎与我的 Netbeans 版本(7.0)不兼容,即使它似乎可以运行,对任何 java 文件的任何修改仍然需要重新部署。
我可以采取什么措施来解决这些问题,或者在 Java EE 中,每次更改任何 Java 文件后等待大约 1 分钟是正常现象吗?这个问题极大地降低了生产力。
这是部署应用程序时 Glassfish 的输出:http://pastebin.com/7FhZ6AVh http://pastebin.com/7FhZ6AVh