JGroup Ehcache Tomcat 集群启动的问题

东方星痕 发布于 2014/07/09 18:07
阅读 1K+
收藏 0

最近在研究Ehcache的集群

因为以JGroups 多播方式 配置时可以减少配置文件

不需要每台机器都一个配置文件,而让集群自己自动发现

做纯java console的demo时是没事的,可以正常启用

https://github.com/ystyle/EhCacheDemo demo可以在这下载)

但产品的开发是以第三方的开发平台为基础开发的,底层是tomcat修改的

在启动时平台要配置ip(不太清楚是怎么绑定的)

问题就出现在这,因为jdk1.6 还是jgroup、Ehcache不支持ipv6


WARN  09-07 17:38:04,762 - failed to join /ff0e:0:0:0:0:0:75:75:7500 on net0: ja
va.net.SocketException: error setting options
2014-7-9 17:38:07 net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerPro
vider init
信息: JGroups Replication started for 'CacheDemos'. JChannel: local_addr=YSTYLE-7984
启动是能启动,但是找不到局域网的其它机器,


如果用 jvm 启动参数禁用 ipv6的话 -Djava.net.preferIPv4Stack=true

因为ip已经分给平台使用了( 我猜平台可以是直接绑定了ip),

ehcache启动时找不到可用的ip,直接空指针异常了

2014-7-8 11:52:42 net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerPro
vider init
严重: Failed to connect to JGroups cluster 'CacheDemos', replication will not functio
n. JGroups properties:
UDP(mcast_addr=231.12.21.132;mcast_port=45566;):PING:MERGE2:FD_SOCK:VERIFY_SUSPE
CT:pbcast.NAKACK:UNICAST:pbcast.STABLE:FRAG:pbcast.GMS
java.lang.NullPointerException
        at java.net.NetworkInterface.getInterfaceAddresses(NetworkInterface.java
:133)
        at org.jgroups.stack.DiagnosticsHandler.bindToInterfaces(DiagnosticsHand
ler.java:213)
        at org.jgroups.stack.DiagnosticsHandler.start(DiagnosticsHandler.java:87
)
        at org.jgroups.protocols.TP.start(TP.java:1215)
        at org.jgroups.protocols.UDP.start(UDP.java:232)
        at org.jgroups.stack.ProtocolStack.startStack(ProtocolStack.java:952)
        at org.jgroups.JChannel.startStack(JChannel.java:864)
        at org.jgroups.JChannel._preConnect(JChannel.java:527)
        at org.jgroups.JChannel.connect(JChannel.java:284)
        at org.jgroups.JChannel.connect(JChannel.java:275)
        at net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProvider.i
nit(JGroupsCacheManagerPeerProvider.java:154)
        at net.sf.ehcache.CacheManager.doInit(CacheManager.java:472)
        at net.sf.ehcache.CacheManager.init(CacheManager.java:388)
        at net.sf.ehcache.CacheManager.<init>(CacheManager.java:264)
        at net.sf.ehcache.CacheManager.newInstance(CacheManager.java:1079)
        at net.sf.ehcache.CacheManager.newInstance(CacheManager.java:975)



不知道是否有人对这方面有了解的,求个解决方法

加载中
返回顶部
顶部