环境: redhat 4.8,AIX 5.3
weblogic 815
情况:<2009-4-7 20时19分34秒 GMT+08:00> <Error> <Cluster> <BEA-000110> <Multicast socket receive error: java.io.OptionalDataExceptionjava.io.OptionalDataExceptionat java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))at java.io.ObjectInputStream.readObject(ObjectInputStream.java(Compiled Code))at weblogic.cluster.MulticastManager.execute(MulticastManager.java:411)at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)>
官方解释:BEA-000110 Error: Multicast socket receive error: e
Description An error occurred while trying to receive a message over the multicast.
Cause An error occurred while trying to receive a message over the multicast.
Action Make sure that the NIC is functioning properly. If you believe there no environment problems exist, contact BEA support and provide the stack trace for further analysis.
解决:发现是多播地址冲突造成的,在console修改 Multicast Address 和Multicast Port,再重启,Ok。
知识积累:
多播:IP 多播是一种简单的广播技术,使多个应用程序 "订阅" 指定的 IP 地址和端口号并监听消息。多播地址是范围在 224.0.0.0 到 239.255.255.255 之间的一个 IP 地址。它是集群里的成员之间彼此通信的多播地址,可以进行配 置,MBean:weblogic.management.configuration.ClusterMBean,特 性:MulticastAddress。
多播端口:集群里的成员彼此之间进行通信的多播端口,地址范围是在1到65535之间,默认的是7777.
集群里成员的通信内容包括:
1.集群之间的JNDI同步 -- 集群中的每个WebLogic Server instance 都通过广播去更新自己的JNDI树,比如部署新的JNDI,或者卸掉本地的JNDI。
2.集群心跳(Cluster heartbeats)-- 集群中的每个WebLogic Server instance 利用广播地址去广播正常的Cluster heartbeats信息,显示其可用性,通过监控Cluster heartbeats信息,instance 就可以决定何时instance 已经失败。(集群服务器实例还监测IP套接字作为一个更直接的方法确定一个服务器实例失败了)。