Hello,
Cluster static members seem to fail since version 7.0.70 (also
reproduced in 8.0.45):
SEVERE: The required Server component failed to start so Tomcat is
unable to start.
...
Caused by: org.apache.catalina.tribes.ChannelException:
java.lang.IllegalArgumentException: McastService:Required property
"tcpListenPort" is missing.; No faulty members identified.
at
org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:200)
at
org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:100)
at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
at
org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor.start(StaticMembershipInterceptor.java:168)
at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
at
org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:431)
at
org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:689)
... 15 more
Caused by: java.lang.IllegalArgumentException: McastService:Required
property "tcpListenPort" is missing.
at
org.apache.catalina.tribes.membership.McastService.hasProperty(McastService.java:360)
at
org.apache.catalina.tribes.membership.McastService.start(McastService.java:379)
at
org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:182)
... 21 more
The reason could be here:
$ diff -r
apache-tomcat-7.0.69-src/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
apache-tomcat-7.0.70-src/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
28a29,30
> import org.apache.catalina.tribes.membership.StaticMember;
> import org.apache.catalina.tribes.transport.ReceiverBase;
143a146,148
> if (clusterReceiver instanceof ReceiverBase) {
> ((ReceiverBase)clusterReceiver).setChannel(getChannel());
> }
146,149c151,165
<
membershipService.setLocalMemberProperties(getClusterReceiver().getHost(),
<
getClusterReceiver().getPort(),
<
getClusterReceiver().getSecurePort(),
<
getClusterReceiver().getUdpPort());
---
> Member localMember = getChannel().getLocalMember(false);
> if (localMember instanceof StaticMember) {
> // static member
> StaticMember staticMember = (StaticMember)localMember;
> staticMember.setHost(getClusterReceiver().getHost());
> staticMember.setPort(getClusterReceiver().getPort());
>
> staticMember.setSecurePort(getClusterReceiver().getSecurePort());
> } else {
> // multicast member
>
> membershipService.setLocalMemberProperties(getClusterReceiver().getHost(),
> getClusterReceiver().getPort(),
> getClusterReceiver().getSecurePort(),
> getClusterReceiver().getUdpPort());
>
> }
but I can't see why and go forward alone ;). If I'm not wrong, posting
in this mailing list is the proper way to go.
Regards,
Carlos.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]