我在windows下安裝用Vmware+Redhat,配置apache+tomcat+負載平衡的時候,出現了一個很奇怪的問題:
注意到:
資訊: Initializing ProtocolHandler ["http-bio-8080"]2011-8-2 19:59:24 org.apache.coyote.AbstractProtocol init資訊: Initializing ProtocolHandler ["ajp-bio-8009"]2011-8-2 19:59:24 org.apache.catalina.startup.Catalina load資訊: Initialization processed in 732 ms2011-8-2 19:59:24 org.apache.catalina.core.StandardService startInternal資訊: Starting service Catalina2011-8-2 19:59:24 org.apache.catalina.core.StandardEngine startInternal資訊: Starting Servlet Engine: Apache Tomcat/7.0.192011-8-2 19:59:24 org.apache.catalina.ha.tcp.SimpleTcpCluster startInternal資訊: Cluster is about to start2011-8-2 19:59:25 org.apache.catalina.tribes.transport.ReceiverBase bind資訊: Unable to bind server socket to:/192.168.137.3:4099 throwing error.2011-8-2 19:59:25 org.apache.catalina.tribes.transport.nio.NioReceiver start嚴重: Unable to start cluster receiverjava.net.BindException: Cannot assign requested address at sun.nio.ch.Net.bind(Native Method) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:52) at org.apache.catalina.tribes.transport.ReceiverBase.bind(ReceiverBase.java:231) at org.apache.catalina.tribes.transport.nio.NioReceiver.bind(NioReceiver.java:138) at org.apache.catalina.tribes.transport.nio.NioReceiver.start(NioReceiver.java:107) at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:145) at org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:99) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:153) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:419) at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:653) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1024) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.startup.Catalina.start(Catalina.java:621) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)2011-8-2 19:59:25 org.apache.catalina.ha.tcp.SimpleTcpCluster startInternal嚴重: Unable to start cluster.org.apache.catalina.tribes.ChannelException: java.net.BindException: Cannot assign requested address; No faulty members identified. at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:178) at org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:99) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:153) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:419) at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:653) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1024) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.startup.Catalina.start(Catalina.java:621) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)Caused by: java.net.BindException: Cannot assign requested address at sun.nio.ch.Net.bind(Native Method) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:52) at org.apache.catalina.tribes.transport.ReceiverBase.bind(ReceiverBase.java:231) at org.apache.catalina.tribes.transport.nio.NioReceiver.bind(NioReceiver.java:138) at org.apache.catalina.tribes.transport.nio.NioReceiver.start(NioReceiver.java:107) at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:145) ... 22 more2011-8-2 19:59:25 org.apache.catalina.startup.Catalina start嚴重: Catalina.start: org.apache.catalina.LifecycleException: org.apache.catalina.tribes.ChannelException: java.net.BindException: Cannot assign requested address; No faulty members identified. at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:660) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1024) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.startup.Catalina.start(Catalina.java:621) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)Caused by: org.apache.catalina.tribes.ChannelException: java.net.BindException: Cannot assign requested address; No faulty members identified. at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:178) at org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:99) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:153) at org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162) at org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:419) at org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:653) ... 15 moreCaused by: java.net.BindException: Cannot assign requested address at sun.nio.ch.Net.bind(Native Method) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:52) at org.apache.catalina.tribes.transport.ReceiverBase.bind(ReceiverBase.java:231) at org.apache.catalina.tribes.transport.nio.NioReceiver.bind(NioReceiver.java:138) at org.apache.catalina.tribes.transport.nio.NioReceiver.start(NioReceiver.java:107) at org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:145) ... 22 more2011-8-2 19:59:25 org.apache.catalina.startup.Catalina start資訊: Server startup in 703 ms
這個問題很明顯是連接埠錯誤,但是就是找不到原因,我的主機ip192.168.137.3,我的Vmware的ip是192.168.124.134,我的windows下的tomcat啟動正常,但是在Redhatlinux下面的tomcat啟動的時候就出現了一個錯誤。在網上找了很多資料,都是說連接埠衝突,系統提示,也似乎是連接埠衝突,但是就是找不到原因,也找不到192.168.137.3:4099這個連接埠被誰用了,真是鬱悶,最後我重啟機器,首先啟動linux下面的tomcat錯誤
還是一樣的提示資訊。就是不知道:
Unable to bind server socket to:/192.168.137.3:4099 throwing erro
這句到底是在哪裡進行配置,我的虛擬機器裡怎麼會與192.168.137.3:4099綁定,找到下面那條語句:
org.apache.catalina.tribes.transport.nio.NioReceiver
最後,終於知道是設定檔server.xml檔案出錯了
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" //把這個改為localhost或都自己的ip都可以;如果用auto的話,在vmware裡會與主機的實際ip產生衝突,原因不知道是什麼,呵呵。 port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
重新啟動tomcat,感覺世界又美好了些!