2012-11-13 70 views
1

改變搜索方式無需重新啓動的JBoss部署新的變化含鉛我這個:JBoss的部署上展開部署目錄

https://community.jboss.org/wiki/RedeployAnApplicationWhenChangeAFileInAnExplodedDeploymentDirectory

起初,我以爲我只是找到了聖盃,感人展開目錄上的頂級描述符將重新部署新的更改,但隨即出現奇怪的行爲和錯誤。

原來,servlet和Java類沒有得到重新部署,在閱讀了許多負面答案後,我放棄了這一點,但至少我想知道,什麼是觸摸頂級描述符後重新部署?

如果你們要知道,我在部署Java EE項目作爲JBoss上4倍的戰爭。

+0

我已經添加了的jboss-4.2.x版標籤,使版本更加清晰。你可能會使用4.3.0。我不知道爲什麼我們沒有通用的4.x標籤。 4.2與4.0相差甚遠。 –

+0

它的確定,使用JBoss 4.2 – Ziul

回答

1

雖然應用程序重新部署真正的工作目錄是不是真的在默認情況下刪除(這是其中的JBoss保存編譯JSP的),所以重新部署後,可以保留以前編譯JSP類。

在JBoss 5.1中(我不是100%確定它是否在JBoss 4.x中可用),有一個選項可以強制JBoss刪除應用程序的工作目錄 - 重新部署時。您可以在此選項:$ JBOSS_HOME /服務器/ yourInstance /部署者/ jbossweb.deployer/META-INF /戰爭部署者 - 的jboss-beans.xml文件,在該文件中查找該屬性:

<property name="deleteWorkDirOnContextDestroy">true</property> 

通過默認它被設置爲false,所以將其設置爲true。也許它可以幫助重新部署時解決您的問題,雖然hotdeployment的成功可能取決於其他類等的依賴。另一方面,當熱部署或重新部署應用程序,使用移動命令(MV),但從來沒有副本(cp)之一,因爲mv是原子的,但不是cp(使用cp時,可以在文件仍在複製時激活熱部署掃描器)。

到熱部署另一種解決方案是手動刪除它,(只推薦用於開發環境),我們使用的命令(以記住你已經在deploy目錄)的下列鏈:

rm yourapp.war; rm -rf ../work/jboss.web/localhost/yourapp;mv <newappversiondir>/yourapp.war . 

但請記住,在生產和關鍵環境中的熱部署是強烈不鼓勵

+0

我試圖在測試服務器上的熱部署IM,它重啓JBoss只是一個類或servlet的一個改變需要相當長的,所以我想這可以節省大量的時間,我我會嘗試你的建議,看看會發生什麼。 – Ziul

+0

OK,我懂了工作,但該目錄是不同的我的JBoss:$ JBOSSHOME /服務器/ default/deploy目錄/ jbossweb-tomcat55.sar/META-INF /的jboss-service.xml的,謝謝你幫我出。 – Ziul

+0

是的,目錄可能會在JBoss版本之間改變,您必須查找web/tomcat服務。請記住,最好不要在生產環境中使用它! – Toni