在我的单元测试中,我使用 org.apache.catalina.startup.Tomcat 来部署Web应用程序。我可以使用.war格式部署webapp而没有任何问题。 但在我的情况下,我想从java代码中添加一个值到webapp的index.html,然后上传。所以我不能坚持使用.war格式。我尝试将web应用程序上传为目录。以下是我的java代码,将“examplewebapp”上传为目录。
String appPath="/home/examplewebapp"; // webapp
String currentDir = new File(".").getCanonicalPath();
String tomcatDir = currentDir + File.separatorChar + "tomcat";
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir(tomcatDir);
tomcat.setPort(4040);
tomcat.addWebapp("/examplewebapp", appPath);
tomcat.start();
但未按预期在服务器上部署Web应用程序。我需要知道是否 tomcat.addWebapp()方法仅支持.war格式或我的代码中有任何错误。
答案 0 :(得分:0)
第1步:咨询Lars Vogel's 4th chapter of his tutorial how to add Tomcat in Eclipse并按照他的指示行事。
步骤2:单击您的Web项目并转到步骤3.
步骤3:单击Run,让Eclipse启动Tomcat。
步骤4:选择“在服务器上运行”并继续执行确定。
步骤5:选择现有服务器并选择启用复选框。
第6步:享受!
答案 1 :(得分:0)
我认为上面的代码中有两个错误
第一个yon没有路径到正确的文件夹(String appPath =“/ home / examplewebapp”; // webapp)
第二,你需要打电话 tomcat.getServer()等待();在tomcat.start()之后;因为服务器在启动后会退出。
见下面的例子
String webappDirLocation =“src / main / webapp /”; Tomcat tomcat = new Tomcat();
//The port that we should run on can be set into an environment variable
//Look for that variable and default to 8080 if it isn't there.
String webPort = System.getenv("PORT");
if(webPort == null || webPort.isEmpty()) {
webPort = "8080";
}
tomcat.setPort(Integer.valueOf(webPort));
tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
System.out.println("configuring app with basedir: " + new File("./" + webappDirLocation).getAbsolutePath());
tomcat.start();
tomcat.getServer().await();
}