2013-02-27 104 views
12

我想嘗試Spring Source的「Spring Loaded」類重載代理,並通過IntelliJ運行Tomcat。IntelliJ + Tomcat +彈簧加載

https://github.com/SpringSource/spring-loaded

我已經添加了JVM參數,以我的Tomcat的運行配置,我的web應用程序啓動時沒有錯誤,似乎正常行爲。

我真的不知道如何觸發類重新加載。我是否需要編譯我修改的類?我試過了,看起來沒有效果。我需要更新Tomcat並部署類和資源嗎?這似乎也不工作......?

任何特定的配置細節將不勝感激。

編輯:更多信息,我認爲我的問題可能與使用兩個模塊,一個核心代碼庫和一個webapp有關。我對兩者都使用Maven,一個配置爲jar項目,另一個配置爲戰爭項目。 IntelliJ爲爆炸戰爭設置了Artifact以使用jar模塊的jar文件。我嘗試切換Artifact配置,將jar模塊的編譯輸出合併到WEB-INF/classes中。現在我在target/webapp/WEB-INF/class/etc中看到.class文件。但我不知道如何讓IntelliJ在編輯時更新特定的類文件。

+0

你想出一個辦法來處理同春子模塊加載? – Damien 2014-06-06 09:46:34

+0

還沒有。很長一段時間以來我一直沒有回到這方面的工作。 – sdouglass 2014-06-23 17:18:04

回答

5

如果添加以下JVM參數(如彈簧加載頁面描述)到Tomcat

-javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify SomeJavaClass 

你應該罰款。這可能有助於禁用您正在測試的webapp在tomcat中的自動重新加載。例如在你的server.xml中:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> 
    <Context docBase="projekt" path="/projekt" reloadable="false" ... 

這確保只有彈簧加載的類加載器加載改變的類。

+0

感謝您的回答。它是什麼觸發springloaded classloader來重新加載更改的類?它是否定期發生?它是否監視類文件的時間戳更改?或者我需要在IntelliJ中執行一個動作來觸發它? – sdouglass 2014-02-19 00:37:21

+0

根據https://github.com/spring-projects/spring-loaded類文件每秒鐘觀察一次更改。 – varad 2014-06-20 10:28:27

+0

對不起,你是怎麼用IntelliJ改變它的? 我的意思是,這是不可能改變使用IntelliJ,因爲你沒有「server.xml」的可見性,是嗎? – 2015-02-20 17:08:50