使用DeployTask类远程部署war文件的Java代码

使用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";

我编写了下面的代码,通过使用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";
        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();