2009-02-11 60 views
5

我正在运行JBoss 4.0.3.SP1_CP04并使用Eclipse 3.4.1的调试器连接到它们,都使用JDK 1.6.0_11。如何在JBoss中使用Java“热代码替换”?

当我对一个方法(例如,将逻辑中的“+ 1”更改为“+ 2”)进行轻微更改并保存时,我立即收到一个标题为“热代码失败”的错误消息对话框错误“Delete方法没有实现”

Hot code replace failed dialog http://img6.imageshack.us/img6/531/hotcodereplacefailedkp6.png

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

回答

3

你想要做的是作为exploded WAR部署到JBOSS。通常情况下,如果编辑器自己进行初始部署,它将随着管理员在更改时复制单个文件。

在IntelliJ中,this is easy。我从来没有从Eclipse做过,但是this project是你最好的选择。

+0

这个答案提醒我检查一下,如果我的WAR在创建新项目后发生爆炸,并发现我无法热插拔 - 谢谢! – peteorpeter 2013-10-15 14:44:12

2

我一直在使用JRebel,它只是修改代码并动态更新应用程序服务器,它是一种生命保护程序。第一天为自己付款。 (我们有7分钟的编译/部署/重启周期)

0

你所描述的应该工作。什么是你的jvm参数来调试jboss?

矿是这些: -Xdebug -Xnoagent -Xrunjdwp:交通= dt_socket,地址= 8000,服务器= Y,暂停= N

0

我在那里热代码替换本身是不工作的问题。我们进行了一些更改,例如确保“自动构建”已被选中,并取消选中“在发生构建路径错误时中止构建”。但就我而言,HCR本身并不奏效。正如你所提到的,我没有得到这个信息。更多细节在这个链接。 https://sites.google.com/site/javaerrorsandsolutions/home/hot-code-replacement

+0

链接已损坏。 – palacsint 2014-10-17 12:00:15

1
  1. 在Eclipse中运行调试器之前确保在您的工作空间被刷新(如果代码是在Eclipse外部改变是必需的,例如使用外部的工具正从版本控制系统更改后)
  2. 在Java构建所有项目Eclipse的路径确保您不包括作为您试图热插拔的某些库类的一部分
  3. 检查Eclipse JRE = JBoss JRE
  4. 检查您尝试热插拔的类。它有内部类吗?当我不能将类与内部类交换时,我遇到了问题,而其他类交换时没有问题。
1

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

+0

您能否提供一个引用,指出JVM不能由内部eclipse编译器构建的类或来自不同编译器的类混合使用。我无法想象为什么会出现这种情况,但也无法排除。 – dmeister 2012-10-11 08:06:52