繁体   English   中英

如何使用dcevm + hotswapagent在IDE外部的Tomcat上热交换Java类

[英]How to hotswap Java classes on a Tomcat outside the IDE with dcevm+hotswapagent

我试图建立java类热插拔上一个Tomcat是我的机器上,但在我的IDE(Eclipse中) 没有配置。 在所有示例中,我都能找到从Eclipse内部运行的Tomcat服务器。 是否可以在外部tomcat上使用DCEVM + HotSwapAgent进行代码热插拔? 到目前为止,这是我所做的:

  1. 使用DCEVM-light-8u112-installer.jar将DCEVM设置为jdk1.8.0_112 DCEVM-light-8u112-installer.jar
  2. 更新了Tomcat的启动程序以包括以下内容: set JAVA_OPTS=-XXaltjvm=dcevm -javaagent:<path-to>hotswap-agent-1.0.jar %JAVA_OPTS%
  3. 部署了我的应用程序之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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM