[英]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.