首页 > 解决方案 > 我如何在 Spring Boot 嵌入式服务器(tomcat)中部署现有的 Web 应用程序(战争)

问题描述

我有一个允许动态生成 W​​eb 应用程序(战争)的应用程序,我想将这些应用程序部署在服务器中以测试它们,我想将它们放在 spring 的同一个嵌入式服务器中,这就是我解决问题的方法一个简单的主java。

public class Main {
    private final static Logger logger = LoggerFactory.getLogger(Main.class);
    private final static File catalinaHome = new File(
            "C:\\Users\\Dev\\Desktop\\demo\\userstory-2\\compiler\\patternHost");
    private static Tomcat tomcat = null;
    public static void main(String[] args) {
        tomcat = new Tomcat();
        tomcat.setPort(8080);
        tomcat.setBaseDir(catalinaHome.getAbsolutePath());
        tomcat.getHost().setAutoDeploy(true);
        tomcat.getHost().setDeployOnStartup(true);
        tomcat.getServer().addLifecycleListener(new VersionLoggerListener());
        tomcat.getHost().addLifecycleListener(new HostConfig());
        try {
            tomcat.start();
        } catch (LifecycleException e) {
            logger.error("Tomcat could not be started.");
            e.printStackTrace();
        }
        logger.info("Tomcat started on " + tomcat.getHost());
        tomcat.getServer().await();
    }
}

我怎样才能对弹簧靴做同样的事情。?

标签: javaspring-bootembedded-tomcat-7

解决方案


我以这种方式将非弹簧应用程序转换为弹簧启动,它对我有用。我能够使用 spring boot 嵌入式 tomcat 运行它。希望这可以帮助。

Spring boot 是关于速度的,它带有嵌入式 tomcat 服务器(前提是您使用 spring-boot-starter-web 依赖项),现在您只需要 java 来运行您的独立 Spring Boot 应用程序。它减少了将war文件复制到tomcat的webapp文件夹然后启动它的手动步骤。

尝试适合您的应用的方法。

如果您的旧应用程序是基于弹簧的:

  1. 创建一个新的 spring boot starter web 项目并将你的旧源代码复制到这个新项目中。修改 application.properties、resources 文件夹,在 pom.xml 文件中添加所有需要的依赖项并将包更改为war.
  2. 这样做会在项目根目录的目标mvn clean install文件夹中生成一个war文件(带有嵌入式tomcat) 。现在要运行它,您需要做的就是在您的目标文件夹中打开终端并运行它将启动应用程序。java -jar your_warFileName.war

如果您的旧应用不是基于弹簧的:

  1. 再次从新的 spring boot starter web 项目开始并复制您的源代码,然后将旧代码与 spring-boot 一起使用,首先您必须进行清理工作,例如将 @RestController 添加到控制器类,通过使用 @ 标记类来声明 bean在适当的位置提供服务或 @Component 和自动装配 bean。一旦您的代码编译良好,然后运行它,您可以使用上面的步骤 2。

推荐阅读