使用DeployTask类远程部署war文件的Java代码
我编写了下面的代码,通过使用tomcat已经实现的类使用DeployTask类远程部署war文件的Java代码,java,tomcat,deployment,war,Java,Tomcat,Deployment,War,我编写了下面的代码,通过使用tomcat已经实现的类DeployTask在tomcat服务器上远程部署war文件 import java.io.File; import org.apache.catalina.ant.DeployTask; public class TestClass { public static void main(String[] args) { String filePath = "resources/StudentWS.war";
DeployTask
在tomcat服务器上远程部署war文件
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();
}
}
这是tomcat上用户部署器的配置:
< role rolename="manager-script"/>
< role rolename="manager-jmx"/>
< user username="deployer" password="admin" roles="manager-script,manager-jmx"/>
我想知道我遗漏了什么,或者是否有java代码可以通过使用下面的url而不使用maven远程部署war文件:
http://localhost:8080/manager/text/deploy?path=/StudentWS&war=file:Path_To_War_File
我也有同样的问题。问题似乎是我们需要使用“localwar”属性。我查看了源代码,它以不同的方式对待war属性,无法使用该属性部署本地文件。 将代码更改为:
DeployTask deployTask=new DeployTask();
deployTask.setUrl(url);
deployTask.setUsername("deployer");
deployTask.setPassword("admin");
deployTask.setLocalWar(warFile.getAbsolutePath());
deployTask.setPath(webPath);
deployTask.execute();
更新
我刚刚意识到,只有当您部署到的服务器是本地服务器时,这才有效。如果它是一个远程服务器,我不相信它会工作。部署任务本身一定是出了问题,导致它失败
DeployTask deployTask=new DeployTask();
deployTask.setUrl(url);
deployTask.setUsername("deployer");
deployTask.setPassword("admin");
deployTask.setLocalWar(warFile.getAbsolutePath());
deployTask.setPath(webPath);
deployTask.execute();