部署Tomcat服務時,解決Cannot invoke Tomcat Manager 異常

最近,在使用Jenkins對工程一鍵部署的時候,出現調用Tomcat Manager 異常,對其解決方案特記於次。html

異常信息

可能存在的異常:(1)Cannot invoke Tomcat manager: Error writing to server ;(2)Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]。web

異常緣由

經查詢資料,安裝Tomcat時,默認帶着manager工程,其負責WAR包的部署等功能。因爲使用manager須要帳戶與密碼進行驗證,因此若是沒有配置帳戶與密碼,就會報這樣的異常。apache

但還存在這種狀況,下邊該配置的都配置了,但還會報這個異常,這時候須要你重啓一下Tomcat,而後再部署。(緣由是因爲Tomcat的遠程地址攔截器形成的結果,須要在/conf/Catalina/localhost/manager.xml中添加RemoteAddrValve屬性,參考文獻3)tomcat

解決方案

1. web工程的pom文件中添加的tomcat-maven-plugin插件,該插件用於將由maven構建的war包部署到指定的遠程Tomcat容器,並配置帳號與密碼等信息,該帳戶密碼須要與對應Tomcat的conf/tomcat-user.xml配置一致。app

 1 <plugin>
 2     <groupId>org.codehaus.mojo</groupId>
 3     <artifactId>tomcat-maven-plugin</artifactId>
 4     <version>1.1</version>
 5     <configuration>
 6          <url>http://ip/manager/text</url>
 7          <username>tomcat</username>
 8          <password>tomcat</password>
 9          <update>true</update>
10          <path>/xxxx</path>
11     </configuration>
12 </plugin>

 其中,url指定遠程Tomcat,path對應webapps中的具體路徑。webapp

2. 在conf/tomcat-user.xml中添加以下角色信息,以及具備這些角色的用戶maven

1 <role rolename="manager-gui" />
2 <role rolename="manager-script" />
3 <role rolename="admin-gui" />
4 <role rolename="admin-script" />
5 <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,admin-gui,admin-script" />

3. 有人說還須要修改Maven用戶倉庫路徑下的配置文件(USER_HOME/.m2/settings.xml),本人沒有改,也成功了(也寫在這作參考)。該配置是本地maven倉庫訪問遠程倉庫時,須要配置的用戶名和密碼。ui

 1 <settings>
 2     ...
 3     <servers>
 4         ...
 5         <server>
 6             <id>my-tomcat</id>
 7             <username>manager</username>
 8             <password>managerPwd</password>
 9         </server>
10     </servers>
11 
12 </settings>

參考:url

相關文章
相關標籤/搜索