我对 Java EE 很陌生,一直在为部署过程的缓慢而苦苦挣扎,想知道我是否做错了什么。我对 Django 有经验,其中代码的更改会立即发生,而且热部署 Java EE 应用程序似乎有点令人困惑——有多种东西声称可以热部署(Glassfish、Eclipse manic hotdeploy、Jetty hotdeploy、JRebel 等。 )。
我的项目是一个 Maven 项目,我正在使用 Netbeans 进行部署。该站点使用 Spring、JSF 和 Hibernate 框架。
在 Netbeans 中,根据以下屏幕截图,在保存时部署似乎已启用,但单击/取消单击是不可能的,因为它声称从我的 pom.xml 中获取信息(尽管我的 pom.xml 中没有这样的字段(仅依赖))。
现在,对某些文件的更改似乎立即生效。其中包括: - JSF 文件 - 静态文件
以下更改需要部署: - 任何 XML 文件 - 任何属性文件,甚至本地化属性文件 - 任何 java 文件
对这些的更改需要我手动部署并且重新部署需要半分钟,即使我目前只有 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