可以帮助某人实现多播。我已经通过在我的本地 tomcat 中从 eclipse 中运行我的应用程序并在我同事的 eclipse 中的本地 tomcat 中运行相同的应用程序来验证。
在你的 Windows 机器上运行下面会显示一些 ips 并确保多播应该工作。
netsh interface ip show joins
属性 multicastGroupAddress=230.0.0.1 表示您的应用程序要使用此 IP,可以更改但确保仅使用 D 类 IP 范围。运行您的应用程序后,您可以看到这个 IP 230.0.0.1 也如下所示
要查看所有魔法,请确保正确启用日志。
<logger name="net.sf.ehcache"> <level value="debug"/></logger>
<logger name="net.sf.ehcache.distribution.RMICachePeer" level="debug" />
确保在默认缓存或所需缓存配置中有以下 lisner
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="port=40003, peerDiscovery=automatic,
multicastGroupAddress=230.0.0.1,
multicastGroupPort=4446,
timeToLive=32"/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="port=40001, socketTimeoutMillis=3000" />
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="port=40002, socketTimeoutMillis=3000"/>
<defaultCache
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="300"
diskExpiryThreadIntervalSeconds="305"
memoryStoreEvictionPolicy="LRU"
statistics="true">
<persistence strategy="localTempSwap"/>
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
<bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" properties="bootstrapAsynchronously=true, maximumChunkSizeBytes=5000000"/>
</defaultCache>
部署应用程序后,您可以在日志中看到以下内容
13:31:27.073 DEBUG n.s.e.d.PayloadUtil assembleUrlList - Cache peers for this CacheManager to be advertised:......
15:15:14.110 DEBUG net.sf.ehcache.distribution.MulticastKeepaliveHeartbeatReceiver processPayload rmiUrls received....(YOur configured caches with Ips)
如果您需要配置手动对等点发现过程,这将很有帮助。