2011-10-14 118 views
10

对于Java EE,我很新,并且一直苦于部署过程缓慢,并且不知道我是否做错了什么。我对Django的经验很快,在那里对代码的改变立即发生,而且热部署Java EE应用程序似乎有点令人困惑 - 有很多东西声称热部署(Glassfish,Eclipse manic hotdeploy,Jetty hotdeploy,JRebel等等)。 )。立即重新部署Java EE应用程序

我的项目是一个Maven项目,我正在使用Netbeans进行部署。该网站使用Spring,JSF和Hibernate框架。

在Netbeans中,根据下面的屏幕截图似乎已启用,但点击/取消点击是不可能的,因为它声称从我的pom.xml中获取信息(尽管我的pom中没有这样的字段.xml(仅依赖关系))。 enter image description here

现在,对某些文件的更改似乎立即生效。这些措施包括: - JSF文件 - 静态文件

更改下列要求部署: - 任何XML文件 - 任何属性文件,甚至是本地化属性文件 - 任何Java文件

更改那些需要我部署手动并重新部署需要半分钟,即使我目前只有2-3个类,基本上只有一个用户类和一个授权类。该项目目前只允许登录,尽管如此,汇编需要几秒钟的时间;和容器(Glassfish)似乎消耗大约600 MB的内存,甚至在几次部署后都会发生PermGen错误,我需要使用任务管理器来终止Java进程。 (我已经读过,这与每次重新部署后垃圾收集器泄漏有关,并且我甚至使用jhat生成配置文件,但是呈现了数千个类的列表,我的类,Spring,Hibernate类等)。

我也听说过jrebel,并尝试运行它,但它似乎与我的Netbeans版本(7.0)不兼容,即使它似乎运行,任何修改任何Java文件仍然需要重新部署。

有什么我可以做的,以补救这些问题,或者是在Java EE中等待每个更改为任何Java文件后大约1分钟才正常?这个问题显着地破坏了生产力。

这里是在部署应用程序时,我的Glassfish的输出:http://pastebin.com/7FhZ6AVh

回答

5

我发现既不可靠,也不是官方来源,但因为你没有答案,我想指出两点我发现。

第一个是NetBeans站点上的this FAQ,它描述了如何打开保存Maven项目时的编译。看起来这个设置默认是关闭的,并且只对测试默认设置。为了方便:

转到项目属性对话框,编译面板,打开它的主源进行执行为好。

第二是,我必须强调,我不完全理解这个,NetBeans似乎有两种不同的方式部署Web应用程序。第一种方式是就地部署,看起来与手动将.war文件部署到服务器相同。第二种是增量式部署,如果它像增量式编译一样,则意味着当您的应用程序被热部署时,您只需部署已更改的文件。

当您从项目的上下文菜单中单击RunDeploy时,就地部署似乎是默认的部署方法。当您的项目已经部署并且再次点击Run(或使用Run工具栏按钮)时,增量部署就会发生。

我想指出的是,NetBeans常见问题尽管在netbeans.org网站上不是官方出版物。任何人都可以创建一个常见问题解答,这些信息可以并且将在没有修订的情况下过时

编辑:一点深思熟虑之后,我已经决定,所谓的增量部署不部署不同的方式,它只是你第二次Run您的应用程序它的增量部署。

编辑:请注意,上面的指令指向您的Compile面板,而不是您在屏幕截图选择的Run面板。这里是我的屏幕截图显示的是你需要在Compile面板下拉选择for both application and test execution下来,默认是for test execution only

0

“在保存时编译”慢了很多东西给我,但另一件事我已经找到之后是Netbeans中的“应用代码更改”按钮,仅在调试模式下可见。 (图片右侧的绿色按钮)

这对于应用Java代码更改很有用;它每次都不起作用,但我认为它在大多数情况下都适用,如果更改不是方法添加,并且bean是请求作用域。我认为这是手动编译保存,但比重新部署好。

Apply Code Changes

+0

“应用代码更改”是热门。如果您要更改班级签名,则无法使用。 – Daniel

2

JRebel的是与NetBeans 7.0兼容(http://plugins.netbeans.org/plugin/22254/jrebel-netbeans-plugin),实际上它与任何IDE那里兼容。

1

这是一个由Geertjan Wielenga的从NetBeans团队,通过的NetBeans 7.2.1和GlassFish 3.1.2建立JRebel的走一个伟大的视频:

如何使用JRebel的在NetBeans IDE入门:http://www.youtube.com/watch?v=kveXKv2q4Ec

相关问题