Eclipse Kepler和JBoss Wildfly热部署

时间:2013-11-26 09:29:00

标签: eclipse eclipse-kepler jboss-tools wildfly

我正在尝试将eclipse kepler用于Java EE 7.我已经安装了JBoss Tools并成功添加了JBoss Wildfly作为服务器。但是,我的更改不会自动部署。无论如何,应用程序可以像使用glassfish一样自动部署吗?

5 个答案:

答案 0 :(得分:27)

使用Eclipse,在WildFly Server上单击两次以编辑以下属性:

  1. 发布:选择“在构建事件后自动发布”。我也希望将发布间隔更改为1秒。
  2. 应用重新加载行为:选中“自定义应用重新加载...”复选框,然后将正则表达式模式修改为\.jar$|\.class$
  3. 就是这样。祝你好运!

答案 1 :(得分:21)

@varantes和@Sean基本上都是正确的,但这些答案并不完整。

不幸的是,在Java服务器环境中进行完全零停机热部署的唯一方法是使用付费JRebel或免费spring-loaded工具。

但对于小型项目,有一些方法可以通过部分热部署来加快工作速度。基本上:

  1. 启用时选项资源更改时自动发布 然后立即在*.html*.xhtml文件内进行更改 刷新浏览器后立即反映出来。
  2. 要对*.jsp文件进行热部署,那么您应该这样做 在 $ {wildfly-home} /standalone/configuration/standalone.xml 中 进行以下更改:
    <jsp-config/>
    替换为:
    <jsp-config development="true"/>
  3. 重新启动服务器并享受Web文件的热部署。


    但是在修改*.java源文件时,只能进行部分热部署 正如@varantes在他的回答中所述,启用应用程序重新加载行为并将正则表达式模式设置为\.jar$|\.class$是一个选项,但是有严重的缺点:整个模块重新启动,因此:

    1. 需要一些时间(取决于模块的大小)。
    2. 整个申请状态丢失。
    3. 所以个人而言,我不鼓励这种解决方案 JVM支持(在调试模式下)方法体的代码交换。因此,只要您仅修改现有方法的主体,就可以在家(零停机时间,立即反映更改)。但您必须在服务器设置中禁用自动发布,否则应用程序的状态仍将被该重新发布销毁。

      但是如果你非常喜欢java代码(添加类,注释,构造函数),那么不幸的是我只能建议将发布设置为从不自动发布(或关闭服务器),当你完成工作时java文件,然后手动重启您的模块(或开启服务器)。由你决定。


      它适用于小型Java项目,但对于较大的项目,JRebel非常宝贵(或者只是弹簧加载),因为上述所有方法都不够。 顺便说一句:也是因为这些问题,像Rails / Django / Play! Framework这样的解决方案获得了如此巨大的人气。

      祝你好运,快速编码!

答案 2 :(得分:8)

我假设您使用的是最新版本的Wildfly(撰写时为8.0 Beta 1)。

在standalone.xml配置文件中,查找&lt; jsp-config /&gt; 。添加属性 development =“true”,它应该热部署。生成的配置如下所示:

<jsp-config development="true"/>

答案 3 :(得分:4)

在xPath = // servlet-container / jsp-config /

中的配置文件中添加属性(开发,检查间隔,修改测试间隔,重新编译失败)
<servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only">
    <jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/>
</servlet-container>

(适用于WildFly-8.0.0.Final)

答案 4 :(得分:0)

以调试模式启动服务器,它将跟踪方法内部的机会。其他更改它将要求重新启动服务器。