是否可以使用
WebServerFactoryCustomization
从应用内配置配置 tomcat Web 应用程序上下文(特别是持久性管理器),例如:
@Bean
WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainerCustomizer() {
new WebServerFactoryCustomizer<TomcatServletWebServerFactory>() {
@Override
void customize(TomcatServletWebServerFactory container) {
container.addContextCustomizers(new TomcatContextCustomizer() {
@Override
void customize(Context context) {
context.setManager(new RedissonSessionManager())
//...
}
})
}
}
}
但仍然部署到独立的tomcat?
我知道此配置更适合嵌入式 tomcat 模式,但我想消除更改
context.xml
的必要性,并且仍然将战争部署到独立 tomcat。
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Manager className="org.redisson.tomcat.RedissonSessionManager" .... />
</Context>
当我尝试此操作时,它不起作用,它要么显示:
Catalina-utility-1 o.a.c.c.StandardWrapper INFO Waiting for [1] instance(s) to be deallocated for Servlet [grailsDispatcherServlet]
或者只是停滞不前。
不。人们无法从您的应用程序控制外部 tomcat。
想象 10 个应用程序部署到同一个 Tomcat,所有应用程序都根据自己的喜好配置该外部实例...这会导致混乱,更不用说随之而来的安全隐患。
出于同样的原因,
server.*
属性仅适用于嵌入式容器,而不适用于部署到外部容器。