首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring Boot:如何在嵌入式tomcat中添加另一个WAR文件?

Spring Boot:如何在嵌入式tomcat中添加另一个WAR文件?
EN

Stack Overflow用户
提问于 2015-07-13 10:40:53
回答 3查看 20.1K关注 0票数 31

Spring Boot的嵌入式tomcat非常方便,无论是开发还是部署。

但是,如果需要添加另一个(第三方) WAR文件(例如,GeoServer),该怎么办?

也许以下是正常的过程:

  1. 安装普通的Tomcat服务器。
  2. 将Spring Boot应用程序构建为WAR文件,并将其添加到Tomcat的webapps文件夹中。
  3. 还会将另一个(第三方) WAR文件添加到webapps文件夹中。

但是,如果可以进行以下配置,那就太好了。

将Spring boot应用程序构建为独立的Jar,其中包括嵌入式Tomcat.

  • Deploy。

  • 将另一个(第三方) WAR文件添加到嵌入式Tomcat使用嵌入式Tomcat.

同时包含Spring boot应用程序内容和另一个WAR内容的文件夹中

怎么做呢?

更新

当spring boot应用程序由fat jar(=可执行jar)组成时,答案中的代码是不够的。修订后的版本如下:

代码语言:javascript
复制
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
    return new TomcatEmbeddedServletContainerFactory() {

        @Override
        protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(
                Tomcat tomcat) {
            try {
                Context context = tomcat.addWebapp("/foo", "/path/to/foo.war");
                WebappLoader loader =
                    new WebappLoader(Thread.currentThread().getContextClassLoader());
                context.setLoader(loader);
            } catch (ServletException ex) {
                throw new IllegalStateException("Failed to add webapp", ex);
            }
            return super.getTomcatEmbeddedServletContainer(tomcat);
        }

    };
}

由于fat jar中的jar文件不能由系统类加载器加载,因此必须指定显式的父类加载器。否则,附加的WAR将无法在添加了WAR的spring引导应用程序的fat jar中加载库jar。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31374726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档