通过应用内上下文自定义将 war 部署到独立的 tomcat(Spring Boot)

问题描述 投票:0回答:1

是否可以使用

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]

或者只是停滞不前。

java spring-boot tomcat grails
1个回答
0
投票

不。人们无法从您的应用程序控制外部 tomcat。

想象 10 个应用程序部署到同一个 Tomcat,所有应用程序都根据自己的喜好配置该外部实例...这会导致混乱,更不用说随之而来的安全隐患。

出于同样的原因,

server.*
属性仅适用于嵌入式容器,而不适用于部署到外部容器。

© www.soinside.com 2019 - 2024. All rights reserved.