按照官方文檔的描述在server.xml的Engine元素中增加cluster子元素,配置如下:

但是,在我的linux虛拟機上面啟動tomcat時總是如下錯誤:
資訊: Starting Servlet Engine: Apache Tomcat/7.0.62
七月 07, 2015 10:15:38 上午 org.apache.catalina.ha.tcp.SimpleTcpCluster startInternal
資訊: Cluster is about to start
七月 07, 2015 10:15:38 上午 org.apache.catalina.tribes.transport.ReceiverBase bind
資訊: Receiver Server Socket bound to:/127.0.0.1:4000
七月 07, 2015 10:15:38 上午 org.apache.catalina.tribes.membership.McastServiceImpl setupSocket
資訊: Setting cluster mcast soTimeout to 500
七月 07, 2015 10:15:38 上午 org.apache.catalina.tribes.membership.McastServiceImpl start
嚴重: Unable to join multicast group, make sure your system has multicasting enabled.
嚴重: Unable to start cluster.
org.apache.catalina.tribes.ChannelException: java.net.SocketException: 沒有那個裝置; No faulty members identified.
at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart
(ChannelCoordinator.java:177)
at org.apache.catalina.tribes.group.ChannelCoordinator.start
(ChannelCoordinator.java:98)
at org.apache.catalina.tribes.group.ChannelInterceptorBase.start
(ChannelInterceptorBase.java:160)
at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start
(MessageDispatchInterceptor.java:157)
at org.apache.catalina.tribes.group.GroupChannel.start
(GroupChannel.java:419)
at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal
(SimpleTcpCluster.java:690)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1106)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:739)
at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: java.net.SocketException: 沒有那個裝置
at java.net.PlainDatagramSocketImpl.join(Native Method)
at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:179)
at java.net.MulticastSocket.joinGroup(MulticastSocket.java:319)
at org.apache.catalina.tribes.membership.McastServiceImpl.start(McastServiceImpl.java:253)
at org.apache.catalina.tribes.membership.McastService.start(McastService.java:444)
at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:162)
... 22 more
七月 07, 2015 10:15:38 上午 org.apache.catalina.startup.Catalina start
嚴重: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
... 9 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.ha.tcp.SimpleTcpCluster[Catalina]]
... 11 more
Caused by: org.apache.catalina.LifecycleException: org.apache.catalina.tribes.ChannelException: java.net.SocketException: 沒有那個裝置; No faulty members identified.
at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:695)
... 14 more
Caused by: org.apache.catalina.tribes.ChannelException: java.net.SocketException: 沒有那個裝置; No faulty members identified.
at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:177)
at org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:98)
at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:160)
at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:157)
at org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:419)
at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:690)
... 15 more
七月 07, 2015 10:15:38 上午 org.apache.coyote.AbstractProtocol pause
資訊: Pausing ProtocolHandler ["http-bio-8080"]
資訊: Pausing ProtocolHandler ["ajp-bio-8009"]
七月 07, 2015 10:15:38 上午 org.apache.catalina.core.StandardService stopInternal
資訊: Stopping service Catalina
七月 07, 2015 10:15:38 上午 org.apache.coyote.AbstractProtocol destroy
資訊: Destroying ProtocolHandler ["http-bio-8080"]
資訊: Destroying ProtocolHandler ["ajp-bio-8009"]
我猜測應該是多點傳播的問題,本質上講是我虛拟機的網絡那塊有問題,導緻無法加入多點傳播組。
後來,在網上搜集了一些資料,都沒有什麼好的方案
有人說将Receiver的address改成自己的ip位址,不要用auto
也有人說是hostname和/etc/hosts中配置不一緻
更有人說是因為沒有插網線
……
我都試過,無奈還是報這個錯,即使我把SELinux和防火牆都關了亦是如此。
後來,我将tomcat放到我的win7上面可以啟動成功(即使拔掉網線)
我想,放到win7下可以,放到linux上呢?,我将虛拟機中那個無法啟動的tomcat又放到公司的
linux伺服器上,竟然也能啟動成功。我很困惑……
後來,我将虛拟機上的網卡eth0的廣播位址改成228.0.0.4
ipconfig eth0 broadcast 228.0.0.4
再次啟動tomcat,天呐,經常啟動成功了,不知道為什麼……
最後,我做了一個大膽的嘗試
我将虛拟機的網絡連接配接方式由“僅主機模式”改成“橋接模式”,讓虛拟機能夠聯網
又一次在虛拟機中啟動tomcat,結果啟動成功了,很意外
在網絡連接配接方式為“僅主機模式”的虛拟機環境中啟動tomcat,報錯
将虛拟機的廣播位址改成228.0.0.4,啟動tomcat,成功
将虛拟機中的那個tomcat放到win7環境和真實的linux伺服器上啟動成功
不改變虛拟機的廣播位址,将網絡連接配接方式改為“橋接模式”,啟動tomcat,也成功
就這麼稀裡糊塗的,tomcat的就啟動成功了,我也不知道這是為什麼,看來虛拟機環境還是有問題啊!
這裡也懶得往下深究了,總之,做實驗就用橋接模式吧!
日後遇到高人再請教吧………………