如何在JBoss中使用Java“热代码替换”?

我正在运行JBoss 4.0.3.SP1_CP04并使用Eclipse 3.4.1的调试器连接到它,两者都使用JDK 1.6.0_11。

当我对方法进行微小更改(例如,将逻辑中的“+ 1”更改为“+ 2”)并保存时,我立即收到标题为“Hot Code Replace Failed”的错误消息对话框,并显示错误“Delete”方法未实施“

热代码替换失败的对话框http://img6.imageshack.us/img6/531/hotcodereplacefailedkp6.png

任何人都可以建议让这个工作的步骤?

你想要做的是作为爆炸的WAR部署到JBOSS。 通常,如果编辑器进行初始部署,则它将管理在更改时复制单个文件。

在IntelliJ中, 这很容易 。 我从来没有从Eclipse那里做过,但这个项目是你最好的选择。

我一直在使用JRebel ,就修改代码和动态更新应用服务器而言 ,它可以节省生命。 第一天为自己付费。 (我们有7分钟的编译/部署/重启周期)

  1. 在Eclipse中运行调试器之前,确保刷新工作区中的所有项目(如果代码在Eclipse外部更改,则需要它,例如在使用外部工具从版本控制系统进行更改之后)
  2. 在Eclipse的Eclipse Build Path中,确保您不要将某些库类包含在您尝试进行热交换的过程中
  3. 检查Eclipse JRE = JBoss JRE
  4. 检查您尝试热插拔的课程。 它有内部类吗? 当我无法用内部类交换类时,我遇到问题,而其他类交换没有问题。

原因是程序集可以使用另一个热插拔编译器。 例如,如果您通过maven构建项目,我们使用javac。 当您尝试执行热交换时,etslipse使用内置编译器jdt编译器(编译器不是从已安装的jdk中获取的,并且无法通过常规方式进行更改。)。 获得的二进制类是不同的,jvm不能替代它们。

你所描述的应该有用。 你有什么jbm args到jboss来启用调试?

我的是:-Xdebug -Xnoagent -Xrunjdwp:transport = dt_socket,address = 8000,server = y,suspend = n

我有一个问题,热代码替换本身无法正常工作。 我们做了一些更改,例如确保选中“自动构建”并取消选中 – “发生构建路径错误时中止构建”。 但就我而言,HCR本身并没有起作用。 我没有收到您提到的消息。 更多详细信息在此链接中。 https://sites.google.com/site/javaerrorsandsolutions/home/hot-code-replacement