我想将 jrebel 与 intellij IDEA 和 JBOSS AS7 一起使用。
(有一个Web应用程序(所以有WAR))。
通过apache-ANT,构建my-WAR并将其部署在JBOSS AS下。
我知道如何将类或资源的任何更改引入my-WAR中的 jrebel (如果我没有记错!),如下所示:
(在 rebel.xml 中)
<classpath>
<dir name="D:/project/myProject/out/production/myProject">
</dir>
</classpath>
<web>
<link target="/">
<dir name="D:/project/myProject/resources">
</dir>
<dir name="D:/project/myProject/view">
</dir>
</link>
</web>
但是,真的,“jerebel jar-file” 哪里 my-WAR?
in =&gt; “warFile&gt; WEB-INF&gt; lib”?我没有看到它。
请帮帮我。
答案 0 :(得分:5)
jrebel.jar打包在IntelliJ IDEA的JRebel插件中。它不必与WAR本身一起部署。当您通过&#34;使用JRebel&#34;运行时,JRebel插件将为命令行设置正确的JVM参数。或&#34;使用JRebel调试&#34;:
-javaagent:/path/to/jrebel.jar
更新:使用 -agentpath JVM选项配置较新版本的JRebel:
-agentpath:${JREBEL_HOME}/lib/<platform-specific-binary>
请参阅documentation reference正确的设置。
如果从IDE启动服务器,则不必自己动手。如果从命令行启动服务器,则必须自己添加JVM参数,并使用正确的jrebel.jar路径,如下所述:http://manuals.zeroturnaround.com/jrebel/standalone/launch-from-command-line.html#jboss-7-x
Java代理拦截类加载,因此必须在其他类之前加载。正如您可能已经猜到的那样,jrebel.jar是一个Java代理,因此不需要将它打包到WAR中。
相反,配置文件rebel.xml必须打包在WAR-WEB / INF / classes目录中。 JRebel使用rebel.xml来检测已编译的类和资源。因此,在部署应用程序时,JRebel会找到rebel.xml配置文件,并且不会从WAR本身加载应用程序类,而是使用该rebel.xml文件中指定的路径。这就是为什么rebel.xml必须在里面战争,因为你也可以从命令行而不是IDE启动服务器。