gpt4 book ai didi

java - 动态添加 tomcat 到集群 - 必须手动调整 ehcache xml 配置文件?

转载 作者:行者123 更新时间:2023-11-28 23:36:54 26 4
gpt4 key购买 nike

我有一个在 tomcat 集群(目前有 2 个 tomcat 和一个负载均衡器)上运行的 spring web 应用程序,具有 session 复制和所有好东西..

我的目的是能够以一种相当简单的方式(只需启动)启动额外的 tomcats 服务器

我目前的问题是作为我的 Web 应用程序一部分的 spring xml 文件。

例如 - 我的 ehcache.xml:

<!-- Cluster Configuration -->

<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
multicastGroupPort=4446, timeToLive=32" />

<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="**hostName=localhost**, **port=40004**, socketTimeoutMillis=2000" />
<defaultCache maxElementsInMemory="50000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU" />

如您所见,该 xml 中的 port 字段和 hostname 在每个 tomcat 服务器上应该是唯一的。我不想在启动新的 tomcat 服务器之前手动更改此字段。

有什么解决方案吗?

最佳答案

我认为有两个主要选择。

1) 您可以在运行 tomcat 时设置系统属性并将其作为变量传递。例如,您可以传递参数 -DehcachePort=xxx,然后在 xml 中将该值设置为 ${ehcachePort}。我找不到此功能文档的链接,但提到了 here

1.1) 如果您不能从命令行设置系统属性,您可以编写一个小类,在加载 ehchache.xml 之前调用 System.setProperty。

2) 从代码中实例化 Ehcache 对象。它与上面的基本相同,但是您必须读取一个属性文件并实例化您需要的任何东西。 Ehcache 支持流畅的构建器,这些构建器非常容易阅读(与 XML 的冗长相比)。

关于java - 动态添加 tomcat 到集群 - 必须手动调整 ehcache xml 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com