Spring Boot 如何使用Sping Boot 嵌入式Tomcat设置Tomcat会话复制

bjg7j2ky  于 2023-03-02  发布在  Spring
关注(0)|答案(1)|浏览(247)

我还没有找到任何关于如何在使用嵌入式的、带有spring Boot 的tomcat时以编程方式设置tomcat会话复制的指南,甚至很难找到“tomcat-catalina-ha”依赖关系。
我有一个Tomcat会话复制的例子,当安装在一个非嵌入式的Tomcat上时,它可以正常工作,但是将它转换成Java配置并不起作用。我研究了Hazelcast,但是我需要的一些选项需要企业许可证。我还被告知,在传统的数据库中存储会话并不能很好地扩展。
我正在寻找一个使用嵌入式Tomcat实现Tomcat会话复制的指南或示例项目。除此之外,我会对为什么没有指南感兴趣?

oogrdqng

oogrdqng1#

所以经过进一步的研究,我找到了这个文档:
此处列出的列表是配置和操作方法问题唯一的归属位置。
通过查看邮件列表归档,我能够找到一个编程集群配置的示例:https://marc.info/?l=tomcat-user&m=160220406421937&w=2
它能够带我走大部分的路,我一直在设置我的集群的上下文通过:

@Configuration
public class MyConfig implements WebServerFactoryCustomize<TomcatServletWebServerFactory> {

@Override
public void customize(TomcatServletWebServerFactory factory) {
    factory.addContextCustomizers(context -> {
        //cluster setup
        SimpleTcpCluster simpleTcpCluster = new SimpleTcpCluster();
        // order of your interceptors does matter fyi
        // rest of setup details, very similar to mailing list archive

        // Make sure the DeltaManager is created for me
        context.setDistributable(true);

        // The key point:
        //context.setCluster(simpleTcpCluster);

        // The fix instead of context.setCluster
        // context.getParent() is an instance of StandardHost
        // And if you are coping from a server.xml, it's also clear
        // that the cluster element is set on the host
        context.getParent().setCluster(simpleTcpCluster);

        // Basically by setting it on the `host`, it allows the startup to 
        // recognize it early enough to start the cluster up.
    });
}

当我在上下文上设置集群时,实际上没有一个集群元素被启动。
我还要指出,在对此进行调查时,我发现了一个article(2013),它显示了如何在使用嵌入式tomcat时加载server.xml,尽管我没有尝试过。
最后一点:我使用了StaticMembershipService和多播,或者StaticMembershipInterceptor

相关问题