簡體   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