前几天在做从其他服务器启动受管节点的测试时遇到了这个错误,现记录一下。
当时正在搭建一个Weblogic的Cluster集群,结果发现其中一个节点上的受管节点死活就是起不来,总是出现如下错误:
<Apr 17, 2012 8:23:49 PM CST> <Notice> <Log Management> <BEA-170027> <The server initialized the domain log broadcaster successfully. Log messages will now be broadcasted to the domain log.>
<Apr 17, 2012 8:23:49 PM CST> <Error> <Cluster> <BEA-000116> <Failed to join cluster SrcbCluster at address 239.192.0.0 due to: java.net.SocketException: No such device.
java.net.SocketException: No such device
at java.net.PlainDatagramSocketImpl.join(Native Method)
at java.net.PlainDatagramSocketImpl.join(PlainDatagramSocketImpl.java:172)
at java.net.MulticastSocket.joinGroup(MulticastSocket.java:276)
at weblogic.cluster.FragmentSocket.initializeMulticastSocket(FragmentSocket.java:112)
at weblogic.cluster.FragmentSocket.start(FragmentSocket.java:131)
Truncated. see log file for complete stacktrace
>
<Apr 17, 2012 8:23:49 PM CST> <Critical> <WebLogicServer> <BEA-000362> <Server failed. Reason:
There are 1 nested errors:
java.net.SocketException: No such device
at java.net.PlainDatagramSocketImpl.join(Native Method)
at java.net.PlainDatagramSocketImpl.join(PlainDatagramSocketImpl.java:172)
at java.net.MulticastSocket.joinGroup(MulticastSocket.java:276)
at weblogic.cluster.FragmentSocket.initializeMulticastSocket(FragmentSocket.java:112)
at weblogic.cluster.FragmentSocket.start(FragmentSocket.java:131)
at weblogic.cluster.MulticastManager$1.run(MulticastManager.java:186)
at weblogic.cluster.MulticastManager.startListening(MulticastManager.java:192)
at weblogic.cluster.InboundService.start(InboundService.java:31)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
>
<Apr 17, 2012 8:23:49 PM CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FAILED>
<Apr 17, 2012 8:23:49 PM CST> <Error> <WebLogicServer> <BEA-000383> <A critical service failed. The server will shut itself down>
<Apr 17, 2012 8:23:49 PM CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FORCE_SHUTTING_DOWN>
通过错误日志的字面意思可以知道,该错误应该是和网络设置有关,可能是网络不可达。查看了一下路由发现没有存在239.192.0.0的路由:
[root@utf11g soft]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.57 0.0.0.0 UG 0 0 0 eth0
239.192.0.0是一个广播地址,正常情况下网卡配了IP之后就会自动附加上的,不知道为什么我的路由表里面没有,于是手工加一下路由:
[root@utf11g ~]# route add -host 239.192.0.0 dev eth0
之后再启动受管节点就正常了:
7103 for protocols iiop, t3, ldap, http.> <Apr 17, 2012 8:42:07 PM CST> <Notice> <WebLogicServer> <BEA-000357> <Started WebLogic Independent Managed Server "MServer2" for domain "srcbdc" running in Development Mode> <Apr 17, 2012 8:42:07 PM CST> <Warning> <JMX> <BEA-149510> <Unable to establish JMX Connectivity with the Adminstration Server AdminServer at <JMXServiceURL:null>.> <Apr 17, 2012 8:42:08 PM CST> <Notice> <Cluster> <BEA-000102> <Joining cluster SrcbCluster on 239.192.0.0:9080> <Apr 17, 2012 8:42:08 PM CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING> <Apr 17, 2012 8:42:08 PM CST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
附上MOS上的官文:
BEA-000116: Failed To Join Cluster: Java.Net.SocketException: No Such Device [ID 1116574.1]
修改时间 17-FEB-2011 类型 PROBLEM 状态 PUBLISHED
In this Document Symptoms Cause Solution References
Oracle Weblogic Server - Version: 9.2 to 10.3.2
Information in this document applies to any platform.
On Red Hat Enterprise Linux 5.3, WebLogic Server is starting and failing with the following exceptions.
<May 18, 2009 6:09:17 PM CEST> <Error> <Cluster><BEA-000116> <Failed to join cluster Cluster-0 at address239.192.0.0 due to: java.net.SocketException: No such device.java.net.SocketException: No such deviceat java.net.PlainDatagramSocketImpl.join(Native Method)at java.net.PlainDatagramSocketImpl.join(PlainDatagramSocketImpl.java:172)at java.net.MulticastSocket.joinGroup(MulticastSocket.java:276)at weblogic.cluster.FragmentSocket.initializeMulticastSocket(FragmentSocket.java:112)at weblogic.cluster.FragmentSocket.start(FragmentSocket.java:131)..... ..... >
The reason that the server is failing with a BEA-000116 exception is that the server is unable to find a network route.
That the server is unable to find a network route is confirmed by the NIC with 2 Mac addresses, for example:
eth0 Link encap:Ethernet HWaddr 00:23:7D:9F:A5:80
eth1 Link encap:Ethernet HWaddr 00:23:7D:9F:A5:76
As explained in the "Multicast and Multihomed Machines: Tuning Multicast Features" document here http://download. Oracle .com/docs/cd/E13222_01/wls/docs92/cluster/multicast_configuration.html#wp1035097 , please use the WebLogic Server Administration Console to ensure that an InterfaceAddress for each Server instance is specified to handle Multicast traffic.
Log in to the WebLogic Server Administration Console.
For each Server (a) Please navigate to Home > Summary of Servers > Summary of Machines > machine_name > Summary of Clusters > cluster_name > server_name (b) Please specify an Interface Address in the Configuration Tab > Cluster Tab
After restarting your domain, please check the config,xml file for an entry like this in the <server> element:
<interface-address>10.16.10.12</interface-address>
NOTE:1092037.1
- WebLogic Server (WLS) Multicast Issues Support Pattern
该贴由hui.chen转至本版2014-11-11 15:06:53
该贴由hui.chen转至本版2014-11-11 15:08:03