Eclipse Kepler和JBoss Wildfly热部署

zul*_*ain 20 eclipse jboss-tools eclipse-kepler wildfly

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

var*_*tes 29

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

  1. 发布:选择"在构建事件后自动发布".我也希望将发布间隔更改为1秒.
  2. 应用程序重新加载行为:选中"自定义应用程序重新加载..."复选框并编辑正则表达式模式\.jar$|\.class$

而已.祝好运!

  • +但不幸的是第二种选择有严重的缺点:整个申请状态都失败了. (2认同)

G. *_*cki 21

@varantes和@Sean都是正确的,但这些答案并不完整.

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

但对于小型项目,有一些方法可以通过部分热部署来加速工作.实质上:

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

重新启动服务器并享受Web文件的热部署.


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

  1. 这需要一些时间(取决于模块的大小).
  2. 整个申请状态丢失了.

所以个人而言,我不赞成这个解决方案.
JVM支持(在调试模式下)方法体的代码交换.因此,只要您仅修改现有方法的主体,就可以在家(零停机时间,立即反映更改).但是您必须在服务器设置中禁用自动发布,否则应用程序的状态仍将被该重新发布销毁.

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


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

祝你好运,快速编码!


小智 8

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

在standalone.xml配置文件中,查找<jsp-config />.添加属性development ="true",它应该热部署.生成的配置如下所示:

<jsp-config development="true"/>
Run Code Online (Sandbox Code Playgroud)