weblogic集群在多播情况下,启动受管服务器报错<Error> <Cluster> <BEA-000110><Error> <Cluster> <BEA-000109> ,折磨了我好几天,今天终于找到答案了。以下是报的错:
<2015-1-31 下午09时48分24秒 CST> <Error> <Cluster> <BEA-000110> <Multicast socket receive error: java.net.SocketException: Socket closed
java.net.SocketException: Socket closed at java.net.PlainDatagramSocketImpl.receive0(Native Method) at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:146) at java.net.DatagramSocket.receive(DatagramSocket.java:816) at weblogic.cluster.MulticastFragmentSocket.receive(MulticastFragmentSocket.java:239) at weblogic.cluster.FragmentSocketWrapper.receive(FragmentSocketWrapper.java:98) Truncated. see log file for complete stacktrace
>
<2015-1-31 下午09时48分24秒 CST> <Error> <Cluster> <BEA-000109> <An error occurred while sending multicast message: java.io.IOException: Invalid argument
java.io.IOException: Invalid argument at java.net.PlainDatagramSocketImpl.send(Native Method) at java.net.DatagramSocket.send(DatagramSocket.java:697) at weblogic.cluster.MulticastFragmentSocket.sendThrottled(MulticastFragmentSocket.java:206) at weblogic.cluster.MulticastFragmentSocket.send(MulticastFragmentSocket.java:158) at weblogic.cluster.FragmentSocketWrapper.send(FragmentSocketWrapper.java:91) Truncated. see log file for complete stacktrace
解决方法:
1. 查看多播的端口是否为7001
如果是7001,那么要改掉。因为7001是控制台的默认端口。改成多播的默认端口7777;
2. 修改setDomainEnv.sh文件
以下部分,红色字体为新增加的内容:
if [ "${debugFlag}" = "true" ] ; then
JAVA_DEBUG="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=${DEBUG_PORT},server=y,suspend=n -Djava.compiler=NONE"
export JAVA_DEBUG
JAVA_OPTIONS="${JAVA_OPTIONS} ${enableHotswapFlag} -ea -da:com.bea... -da:javelin... -da:weblogic... -ea:com.bea.wli... -ea:com.bea.broker... -ea:com.bea.sbconsole...-Djava.net.preferIPv4Stack=true"
export JAVA_OPTIONS
else JAVA_OPTIONS="${JAVA_OPTIONS} ${enableHotswapFlag} -da
-Djava.net.preferIPv4Stack=true"
export JAVA_OPTIONS
然后重启受管服务器,然后就是见证奇迹的时候了!
原因:集群之间使用多播来通信的时候,目前的版本是需要IPV4来实现,IPv6不可以,所以要明确指出IPv4,屏蔽IPv6。
|