我已经搜索了这个问题,但是我没有找到任何关于这种情况的信息。我发现了很多“如何将Spring Boot WAR部署到Tomcat”,但没有涉及使用Spring Boot来包装现有的Tomcat WAR。将现有WAR添加到嵌入式tomcat中
我想用Spring Boot“包装器”包装现有的WAR,以便现有的代码库不必重新配置。 This solution不起作用,因为它取决于WAR在绝对位置可用,而我们正试图将“应用程序”WAR打包到Spring Boot WAR中。然后,我们可以像这样添加WAR的上下文:
Context context = tomcat.addWebapp("myapp", Thread.currentThread().getContextClassLoader().getResource("myapp.war").getPath());
这几乎可以工作。我遇到了一个特定问题。当现有的WAR文件被放入Spring Boot项目时,它将被放入/WEB-INF/lib-provided
而不是/WEB-INF/classes
。我找不到一种方法让嵌入式Tomcat从此位置添加WAR文件。 ClassLoader不会加载它,因为它不在WEB-INF/classes
之下。
从/WEB-INF/lib-provided
有抓住这个战争的方式(或任何方式)吗?
您的目标是让WAR成为一个嵌入式Tomcat应用程序,并且您正在使用Spring Boot实现它,或者您是否想要充分利用Spring Boot?我不确定您是否可以利用Spring Boot的优势,而无需重新配置应用程序以使用Spring Boot。 – qtips
我们的简介是将现有应用程序变为Spring Boot应用程序,并尽可能地进行更改。理想情况下,我们根本不会触及现有的应用程序,只需将其包装在Spring Boot Shell中,并使其可执行而无需单独的Tomcat实例。我确信Spring Boot可以做得更多,但我们没有被分配任务。 – user1071914
在你的情况下使用Spring Boot的目的是什么?我明白你的任务就是尽可能快地开始使用Spring Boot。如果您的目的可以通过其他一些简单的方法实现,我会问。创建一个将您的应用程序嵌入到tomcat独立服务器中的Main类。另外,开始使用Spring Boot可能也很简单,有时你只需要改变你的POM并创建一个Main类。 – qtips