@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
)。
这似乎与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?还是有什么原因?
有什么不同?我可以在联机主机上部署吗?
我对文档模式的定义如下: