2010-04-29 35 views
7

我正在開發一個項目,我們將使用Tomcat 6.0.20進行開發和生產。Tomcat 6 | AntiResourceLocking&antiJARLocking有什麼意義?

我遇到了一些與熱部署相關的問題,它需要在server.xml中將Context.antiResourceLocking設置爲false。我有一些關於antiResourceLocking和antiJARLocking的問題。 我已閱讀參考文獻http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

我無法理解的是,你究竟是指JAR被鎖定或資源被鎖定的意思。到目前爲止,我讀到的是,當您取消部署由於進程鎖定文件/ jar而失敗的應用程序時,通常會出現鎖定問題。有人能指點我什麼,我可以閱讀更多關於這個問題?

我的問題是: 1)如果我將antiJARLocking和/或antiResourceLocking設置爲false,我可以得到哪些問題?有人可以提供一個例子嗎? 2)在生產環境中將這些屬性設置爲false是否是不正確的做法? 2)鎖定不會像Windows機器上發生的那樣頻繁發生在Linux機器上嗎?

感謝您的幫助。

謝謝。

戈文德N.

回答

5

這裏是我的回答以下:

1)從我可以告訴,設置antiJARLocking和/或antiResourceLocking假只能導致Windows的問題(雖然我依稀記得一個Tomcat開發者聲稱它也影響Linux - 我無視這一點,因爲我沒有看到它的證據,也沒有例證/詳細解釋證明它)。

2)當Tomcat在Windows上運行時,將它們設置爲false是一種不好的做法。

第二2)!!我已經在多個Linux發行版和版本上運行了超過十年的Tomcat。由於未將其中一個屬性設置爲true,我從來沒有見過jar鎖或資源鎖定問題。據我所知,它不會發生,但它可能取決於您使用的文件系統實現,並且我總是使用EXT2,EXT3或EXT4。

如果您仍然對此有疑問,請在Tomcat用戶郵件列表中詢問。

乾杯!

傑森布里泰恩 合着者,Tomcat的權威指南(O'Reilly出版)

4

1)我已經建立圍繞SVN系統來自動構建和部署web應用程序,部署經Tomcat的螞蟻製成任務,並且使用antiJARLocking和/或antiResourceLocking爲false,應用程序未正確取消部署,因爲tomcat無法刪除某些jar和log4j.properties配置文件,因此部署失敗。所以我必須將這些屬性設置爲true,並且tomcat在臨時目錄中做了一個webapp的副本。這使得部署變慢,幾乎每次重新部署臨時目錄的大小都增加了,所以我必須做一個過程來從臨時目錄刪除我的應用程序的舊部署。隨時從temp目錄中刪除部署是安全的,因爲tomcat會將應用程序重新部署到臨時目錄。

2)從tomcat docs我明白,只有在Windows上纔會出現jar鎖定或資源鎖定的問題。我不會在生產環境中將這些屬性設置爲true,因爲不需要經常重新部署,對於java來說,重新部署生產後重新啓動服務器總是一個好主意(OutOfMemoryError總是潛伏在黑暗中,即使你自己的代碼不泄漏)。另一個小問題是應用程序被部署到臨時目錄,如果您修改了webapps目錄中的jsp或其他文件,它將不會被重新部署,除非您還將更改複製到臨時目錄。