当前位置: 首页 > 知识库问答 >
问题:

如何在春靴嵌入式Tomcat中扩展战争?

程冥夜
2023-03-14
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
    return new TomcatEmbeddedServletContainerFactory() {

        @Override
        protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
            try {
                tomcat.addWebapp("blog", "/tmp/roller.war");

            } catch (ServletException ex) {
                throw new IllegalStateException("Failed to add webapp", ex);
            }
            return super.getTomcatEmbeddedServletContainer(tomcat);
        }

    };
}

无法创建目录[/tmp/tomcat.9153500015669016883.8080/webapps/blog]

这是tomcat工作目录的布局:

$ find /tmp/tomcat.9153500015669016883.8080/
/tmp/tomcat.9153500015669016883.8080/
/tmp/tomcat.9153500015669016883.8080/work
/tmp/tomcat.9153500015669016883.8080/work/Tomcat
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost/blog
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost/ROOT

expandwar.expand()中的断点表示它希望在webapps/中创建目录。此不存在的webapps文件夹取自host.getAppBaseFile()(来自ContextConfig.Context)。

共有1个答案

罗飞宇
2023-03-14

这似乎与spring无关,而是嵌入式Tomcat的预期行为。我发现了这个相关的问题:

用户应为主机的AppBase定义有效目录。

因此,在部署之前创建默认appBase目录就可以实现以下目的:

tomcat.getHost().getAppBaseFile().mkdir();
tomcat.addWebapp("blog", "/tmp/roller.war");
 类似资料:
  • 我用命令运行了一个spring boot web应用程序。但是,当将打包字段更改为war(在pom.xml中)并将其构建为war时,它未能在tomcat 7中运行。 我把我pom.xml的父母变成: 而且: 我的错误是: 我的问题是: 这里发生了什么,如何克服? 使用Spring-start真的安全吗?因为嵌入式服务器库似乎影响了它部署到j2ee容器中的可靠性。我知道,它仍然是Milestone版

  • 我是Spring boot和tomcat的初学者,我发现了这个问题: 在tomcat服务器上部署Spring Bootwar文件时,如果要添加静态索引,就会出现问题。html与它并肩作战。 为了使它能够部署为war,我在我的应用程序类中添加了以下内容: 现在应用程序工作,但index.html(它位于src/main/资源下)将不显示(IM获得Whitelabel错误页与有一个意外的错误(type

  • 我正在使用NetBeans IDE和带有Spring Boot的Maven。每当我运行我的应用程序不止一次,我就会得到这个错误: O.A.Coyote.http11.http11nioprotocol:无法启动与ProtocolHandler关联的终结点[“http-nio-8080”] spring boot java.lang.IllegalStateException:Tomcat连接器处于

  • 我有时会在pom中看到以下声明。xml。。。 如您所见,sping-boo-starter-web被声明为tomcat-embed-jasper。 是不是sping-boo-starter-web已经有一个嵌入式tomcat了?为什么一些开发人员仍然声明tomcat-embed-jasper以及boot-starter-web?还是有什么原因?

  • 有什么不同?我可以在联机主机上部署吗?

  • 我对文档模式的定义如下: