Tomcatのリモートデプロイが2017年からずっと失敗している件
いまだにAntでTomcatのリモートデプロイをしているのですが、ここ最近のバージョンだとずっと動いていなかったようです。
Antの中身で呼ばれているクラスを実行するとエラーになります。
DeployTask deployer = new DeployTask(); deployer.setUpdate(true); deployer.setWar("C:\\tmp\\WebApplication1.war"); // if change to setLocalWar, it works. deployer.setUsername("tomcat"); deployer.setPassword("tomcat"); deployer.setUrl("http://localhost:8080/manager/text"); deployer.setPath("/WebApplication1"); deployer.execute();
Exception in thread "main" java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:270) at org.apache.catalina.ant.DeployTask.execute(DeployTask.java:178) at tomcattest.TomcatTest.main(TomcatTest.java:28) Caused by: java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1692) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:231) ... 2 more
機能追加で埋め込んでしまった不具合で、ワークアラウンドとしては、実行前に以下のコードを動かせばよいとの事。
ListTask list = new ListTask(); list.setUsername("tomcat"); list.setPassword("tomcat"); list.setUrl("http://localhost:8080/manager/text"); list.execute();
やったね!
影響しているバージョンは以下のものです。
- 9.0.0.M22 - 9.0.12
- 8.5.16 - 8.5.34
- 8.0.45 -
- 7.0.78 - 7.0.91