[英]How to hotswap Java classes on a Tomcat outside the IDE with dcevm+hotswapagent
我试图建立java类热插拔上一个Tomcat是我的机器上,但在我的IDE(Eclipse中) 没有配置。 在所有示例中,我都能找到从Eclipse内部运行的Tomcat服务器。 是否可以在外部tomcat上使用DCEVM + HotSwapAgent进行代码热插拔? 到目前为止,这是我所做的:
DCEVM-light-8u112-installer.jar
将DCEVM设置为jdk1.8.0_112
DCEVM-light-8u112-installer.jar
set JAVA_OPTS=-XXaltjvm=dcevm -javaagent:<path-to>hotswap-agent-1.0.jar %JAVA_OPTS%
war
,其中包括WEB-INF/classes
hotswap-agent.properties
中的hotswap-agent.properties
在我的hotswap-agent.properties
文件中,我已将extraClasspath
属性设置为我的Eclipse工作区中项目的bin
文件夹。 我还设置了autoHotswap=true
(无论是否连接调试器,我都希望代码热交换)。
使用此设置,当我在eclipse中构建时(设置为自动构建),我无法使Tomcat对更改做出反应。 我是否缺少某些东西可以使它正常工作?
旁注-我基本上已经使用JRebel完成了与上述完全相同的操作,所以我知道至少有可能。 我只是想看看我是否可以将其与所有开源工具一起使用。 提前致谢!
这个有可能。 请检查您是否extraClasspath
设置了extraClasspath
编译文件(检查是否在extraClasspath上创建了新版本的.class文件),然后重新启动tomcat,而没有部署新的WAR。 如果未应用更改,则ExtraClasspath设置不正确。
DEBUG级别还应该提供有关例程的更多详细信息-应该类似于Registering resource listener on classpath URI {}
的行
请下载当前的HA版本。
您可以在conf / Catalina / localhost下为上下文创建文件,并在使用Eclipse Build自动更改类时使Tomcat重新加载类。
对于Tomcat 8.5,your_project.xml文件看起来像,对于其他版本的Tomcat,请检查文档,因为它可能略有不同。
<Context docBase="/eclipse-workspace/your_project/src/main/webapp">
<Resources>
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/eclipse-workspace/your_project/target/classes" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/eclipse-workspace/your_other_project/target/classes" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/eclipse-workspace/your_external_libs" internalPath="/" webAppMount="/WEB-INF/lib" />
</Resources>
</Context>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.