J'ai écrit le code ci-dessous pour déployer à distance un fichier war sur le serveur tomcat en utilisant la classe DeployTask
déjà implémentée par Tomcat.
import java.io.File;
import org.apache.catalina.ant.DeployTask;
public class TestClass {
public static void main(String[] args) {
String filePath = "resources/StudentWS.war";
TestClass test=new TestClass();
ClassLoader classLoader = test.getClass().getClassLoader();
File warFile = new
File(classLoader.getResource(filePath).getFile());
String webPath="StudentWS";
String url = "http://localhost:8080/manager/text";
DeployTask deployTask=new DeployTask();
deployTask.setUrl(url);
deployTask.setUsername("deployer");
deployTask.setPassword("admin");
deployTask.setWar(warFile.getAbsolutePath());
deployTask.setPath(webPath);
deployTask.execute();
}
}
Et voici la configuration de l'utilisateur deployer sur tomcat:
< role rolename="manager-script"/>
< role rolename="manager-jmx"/>
< user username="deployer" password="admin" roles="manager-script,manager-jmx"/>
Mais j'ai reçu l'erreur suivante:
Exception in thread "main" java.io.IOException: Error writing request body to server
at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:270)
at org.apache.catalina.ant.DeployTask.execute(DeployTask.java:178)
at TestClass.main(TestClass.java:20)
Caused by: java.io.IOException: Error writing request body to server
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:3518)
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:3501)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:219)
... 2 more
Suppressed: java.io.IOException: insufficient data written
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.close(HttpURLConnection.java:3540)
at java.io.FilterOutputStream.close(FilterOutputStream.java:159)
at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:222)
... 2 more
J'aimerais savoir ce que j'ai manqué ou s'il existe un code java pour déployer à distance un fichier war en utilisant l'url ci-dessous sans utiliser maven:
http://localhost:8080/manager/text/deploy?path=/StudentWS&war=file:Path_To_War_File