是否可以在 spring 启动时在 embedded/inbuilt tomcat 服务器中部署外部 war 文件?
Is it possible to deploy a external war file in embedded/inbuilt tomcat server in spring boot?
我想部署 opencms.war/any war 文件(它不是建立在 spring 引导上,但它可以是 运行 在任何应用程序或网络服务器上)在 spring 引导应用程序内置嵌入式服务器。谁能帮我解决这个问题?
试试这个方法吧。在您的 spring 引导应用程序中添加此代码块。
将您的 war 文件放在 src/main/resources
目录中。
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs();
try {
tomcat.addWebapp("/test", new ClassPathResource("test.war").getFile().toString());
} catch (Exception ex) {
throw new IllegalStateException("Failed to add webapp",ex);
}
return super.getTomcatEmbeddedServletContainer(tomcat);
}
};
}
我想部署 opencms.war/any war 文件(它不是建立在 spring 引导上,但它可以是 运行 在任何应用程序或网络服务器上)在 spring 引导应用程序内置嵌入式服务器。谁能帮我解决这个问题?
试试这个方法吧。在您的 spring 引导应用程序中添加此代码块。
将您的 war 文件放在 src/main/resources
目录中。
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs();
try {
tomcat.addWebapp("/test", new ClassPathResource("test.war").getFile().toString());
} catch (Exception ex) {
throw new IllegalStateException("Failed to add webapp",ex);
}
return super.getTomcatEmbeddedServletContainer(tomcat);
}
};
}