1

我有一個使用Team City deployer插件的構建配置。 我正在使用容器部署將戰爭文件部署到作爲服務安裝在Windows Server 2012 R2框上的Tomcat.7.0.63。 我第一次運行構建,神器(戰爭檔中的成功部署 第二次,和後來的運行,部署失敗Team City:無法重新部署到Tomcat7

錯誤消息:。

Build failure message received: org.codehaus.cargo.container.ContainerException: Failed to undeploy 

日誌文件錯誤:

Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Unable to delete 

當我去到遠程服務器上的文件夾的webapps,戰爭文件被刪除,但在展開的文件夾僅部分刪除大多數文件都消失了,除了PNG文件。 0我無法手動刪除文件夾,因爲Tomcat仍然鎖定它。 如果我重新啓動tomcat,那麼我就可以成功運行構建(戰爭文件部署)。

我想過的一個想法是在每次部署之前或之後重新啓動Tomcat。 如何從TeamCity重新啓動Tomcat? 或者,有沒有人有如何解決這個問題的建議?

+1

看看[Tomcat7配置文檔](http://tomcat.apache.org/tomcat-7.0-doc/config/context.html);你嘗試過'antiResourceLocking'選項嗎? – SteveChapman

+0

我沒有。我會研究一下。 – Pytry

+0

@SteveChapman你對使用antiResourceLocking的建議非常有效。我還添加了「可重新加載」選項,因爲這是一個集成測試服務器,多次重新部署可能在一天中發生。用您的建議創建一個答案,我會將其標記爲正確。 – Pytry

回答

1

您可以使用antiResourceLocking選項配置Tomcat上下文,詳見online documentation。然而,這確實帶來了一些折衷。絕對值得完整閱讀文檔並評估它是否適合您的應用程序。

+0

關於在生產環境中使用它,你有什麼想法?我發現,如果我只等5分鐘左右(應用程序在Tomcat中完成加載的時間足夠多),那麼我可以在不使用此參數的情況下再次運行TeamCity部署。所以對於生產來說,可能並不需要,但由於這是集成測試,我可能會讓耐心的測試人員碰到那個「運行」按鈕,所以我決定讓它容錯。 – Pytry