Advertisement
Guest User

ClusterConfigurer

a guest
Jun 10th, 2011
316
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.79 KB | None | 0 0
  1. /*******************************************************************************
  2.  * Copyright (c) 2011 EclipseSource and others.
  3.  * All rights reserved. This program and the accompanying materials
  4.  * are made available under the terms of the Eclipse Public License v1.0
  5.  * which accompanies this distribution, and is available at
  6.  * http://www.eclipse.org/legal/epl-v10.html
  7.  *
  8.  * Contributors:
  9.  *    EclipseSource - initial API and implementation
  10.  ******************************************************************************/
  11. package org.eclipse.rap.rwt.cluster.testfixture.internal.tomcat;
  12.  
  13. import org.apache.catalina.Engine;
  14. import org.apache.catalina.ha.session.*;
  15. import org.apache.catalina.ha.tcp.ReplicationValve;
  16. import org.apache.catalina.ha.tcp.SimpleTcpCluster;
  17. import org.apache.catalina.tribes.group.GroupChannel;
  18. import org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor;
  19. import org.apache.catalina.tribes.group.interceptors.TcpFailureDetector;
  20. import org.apache.catalina.tribes.membership.McastService;
  21. import org.apache.catalina.tribes.transport.ReplicationTransmitter;
  22. import org.apache.catalina.tribes.transport.nio.NioReceiver;
  23. import org.apache.catalina.tribes.transport.nio.PooledParallelSender;
  24.  
  25. // configure() was sadapted from the XML snippet below:
  26. //  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
  27. //    <Manager className="org.apache.catalina.ha.session.DeltaManager"
  28. //      expireSessionsOnShutdown="false"
  29. //      notifyListenersOnReplication="true" />
  30. //    <Channel className="org.apache.catalina.tribes.group.GroupChannel">
  31. //     <Membership className="org.apache.catalina.tribes.membership.McastService"
  32. //       address="228.0.0.4" port="45564" frequency="500" dropTime="3000" />
  33. //     <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
  34. //       address="auto" port="4000" autoBind="100" selectorTimeout="5000"
  35. //       maxThreads="6" />
  36. //     <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
  37. //      <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
  38. //     </Sender>
  39. //     <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
  40. //     <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
  41. //    </Channel>
  42. //    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="" />
  43. //    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve" />
  44. //    <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />
  45. //    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
  46. //  </Cluster>
  47. class ClusterConfigurer {
  48.   private static final String LOCALHOST = "127.0.0.1";
  49.  
  50.   private final SimpleTcpCluster cluster;
  51.   private final GroupChannel channel;
  52.  
  53.   ClusterConfigurer( Engine engine ) {
  54.     cluster = new SimpleTcpCluster();
  55.     channel = new GroupChannel();
  56.     engine.setCluster( cluster );
  57.   }
  58.  
  59.   void configure() {
  60.     configureChannel();
  61.     configureCluster();
  62.   }
  63.  
  64.   private void configureChannel() {
  65.     channel.setMembershipService( createMembershipService() );
  66.     channel.setChannelReceiver( createChannelReceiver() );
  67.     channel.setChannelSender( createChannelSender() );
  68.     channel.addInterceptor( new TcpFailureDetector() );
  69.     channel.addInterceptor( new MessageDispatch15Interceptor() );
  70.   }
  71.  
  72.   private void configureCluster() {
  73.     cluster.setManagerTemplate( createDeltaManager() );
  74.     cluster.setChannelSendOptions( 8 );
  75.     cluster.addValve( new ReplicationValve() );
  76.     cluster.addValve( new JvmRouteBinderValve() );
  77.     cluster.addClusterListener( new JvmRouteSessionIDBinderListener() );
  78.     cluster.addClusterListener( new ClusterSessionListener() );
  79.   }
  80.  
  81.   private DeltaManager createDeltaManager() {
  82.     DeltaManager result = new DeltaManager();
  83.     result.setExpireSessionsOnShutdown( false );
  84.     result.setNotifySessionListenersOnReplication( true );
  85.     return result;
  86.   }
  87.  
  88.   private McastService createMembershipService() {
  89.     McastService result = new McastService();
  90.     result.setAddress( LOCALHOST );
  91.     result.setPort( 60600 );
  92.     result.setFrequency( 500 );
  93.     result.setDropTime( 3000 );
  94.     return result;
  95.   }
  96.  
  97.   private NioReceiver createChannelReceiver() {
  98.     NioReceiver result = new NioReceiver();
  99.     result.setAddress( LOCALHOST );
  100.     result.setPort( 4000 );
  101.     result.setAutoBind( 100 );
  102.     result.setSelectorTimeout( 5000 );
  103.     return result;
  104.   }
  105.  
  106.   private ReplicationTransmitter createChannelSender() {
  107.     ReplicationTransmitter result = new ReplicationTransmitter();
  108.     result.setTransport( new PooledParallelSender() );
  109.     return result;
  110.   }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement