hammant     02/01/21 13:19:49

  Modified:    altrmi   PROPOSAL
               altrmi/src/java/org/apache/commons/altrmi/common
                        LookupRequest.java MethodRequest.java
                        OpenConnectionReply.java
  Added:       altrmi/src/java/org/apache/commons/altrmi/client/impl/multiple
                        AbstractMultipleHostContext.java
                        AbstractMultipleInvocationHandler.java
                        RotatingMultipleHostContext.java
                        RotatingMultipleInvocationHandler.java
               altrmi/src/java/org/apache/commons/altrmi/common
                        Sessionable.java
  Removed:     altrmi/src/java/org/apache/commons/altrmi/client/impl/multiple
                        MultipleHostContext.java
  Log:
  Start of load balancing hostcontext
  
  Revision  Changes    Path
  1.10      +5 -0      jakarta-commons-sandbox/altrmi/PROPOSAL
  
  Index: PROPOSAL
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/PROPOSAL,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- PROPOSAL  19 Jan 2002 18:29:07 -0000      1.9
  +++ PROPOSAL  21 Jan 2002 21:19:49 -0000      1.10
  @@ -147,6 +147,11 @@
     - For Facades, if you call Person p = getPerson("Fred") twice you will get 
       the same instance on the client side is it is the same instance on the 
       server side.        
  +    
  +15) Load balancing server grouping
  +
  +  - In some configurations, the client side can have multiple servers it 
  +    will forward calls to.
   
   Limitations:
    
  
  
  
  1.1                  
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/multiple/AbstractMultipleHostContext.java
  
  Index: AbstractMultipleHostContext.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.commons.altrmi.client.impl.multiple;
  
  import org.apache.commons.altrmi.client.AltrmiHostContext;
  import org.apache.commons.altrmi.client.AltrmiClientInvocationHandler;
  
  import java.util.Vector;
  import java.util.Collection;
  import java.util.List;
  
  public abstract class AbstractMultipleHostContext implements AltrmiHostContext {
  
      private final AbstractMultipleInvocationHandler 
mAbstractMultipleInvocationHandler;
  
      private Vector mAltrmiHostContexts = new Vector();
  
      public AbstractMultipleHostContext(AbstractMultipleInvocationHandler 
abstractMultipleInvocationHandler) {
          mAbstractMultipleInvocationHandler = abstractMultipleInvocationHandler;
          mAbstractMultipleInvocationHandler.setMultipleHostContext(this);
      }
  
      public void addAltrmiHostContext(AltrmiHostContext altrmiHostContext) {
          mAltrmiHostContexts.add(altrmiHostContext);
      }
  
      public void removeAltrmiHostContext(AltrmiHostContext altrmiHostContext) {
          mAltrmiHostContexts.remove(altrmiHostContext);
      }
  
      protected List getHostContexts() {
          return mAltrmiHostContexts;
      }
  
      /**
       * Method getInvocationHandler
       *
       *
       * @return
       *
       */
      public AltrmiClientInvocationHandler getInvocationHandler() {
          return mAbstractMultipleInvocationHandler;
      }
  }
  
  
  
  1.1                  
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/multiple/AbstractMultipleInvocationHandler.java
  
  Index: AbstractMultipleInvocationHandler.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.commons.altrmi.client.impl.multiple;
  
  import org.apache.commons.altrmi.client.AltrmiClientInvocationHandler;
  import org.apache.commons.altrmi.client.AltrmiConnectionListener;
  import org.apache.commons.altrmi.client.AltrmiConnectionPinger;
  import org.apache.commons.altrmi.common.AltrmiReply;
  import org.apache.commons.altrmi.common.AltrmiRequest;
  
  import java.io.IOException;
  
  public abstract class AbstractMultipleInvocationHandler implements 
AltrmiClientInvocationHandler {
  
      private AltrmiConnectionListener mAltrmiConnectionListener;
      protected AbstractMultipleHostContext mMultipleHostContext;
  
      /**
       * Method setAltrmiConnectionListener
       *
       *
       * @param altrmiConnectionListener
       *
       */
      public void setAltrmiConnectionListener(AltrmiConnectionListener 
altrmiConnectionListener) {
          mAltrmiConnectionListener = altrmiConnectionListener;
      }
  
      protected void setMultipleHostContext(AbstractMultipleHostContext 
multipleHostContext) {
          mMultipleHostContext = multipleHostContext;
      }
  
  
  
      /**
       * Method setConnectionPinger
       *
       *
       * @param connectionPinger
       *
       */
      public void setConnectionPinger(AltrmiConnectionPinger connectionPinger) {
      }
  
      public void initialize() throws IOException {
      }
  
      public void close() {
      }
  
      public long getLastRealRequest() {
          return 0;
      }
  
      public void ping() {
      }
  }
  
  
  
  1.1                  
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/multiple/RotatingMultipleHostContext.java
  
  Index: RotatingMultipleHostContext.java
  ===================================================================
  package org.apache.commons.altrmi.client.impl.multiple;
  
  public class RotatingMultipleHostContext extends AbstractMultipleHostContext {
  
      public RotatingMultipleHostContext() {
          super(new RotatingMultipleInvocationHandler());
      }
  
  }
  
  
  
  1.1                  
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/multiple/RotatingMultipleInvocationHandler.java
  
  Index: RotatingMultipleInvocationHandler.java
  ===================================================================
  package org.apache.commons.altrmi.client.impl.multiple;
  
  import org.apache.commons.altrmi.common.AltrmiReply;
  import org.apache.commons.altrmi.common.AltrmiRequest;
  import org.apache.commons.altrmi.common.Sessionable;
  import org.apache.commons.altrmi.common.OpenConnectionRequest;
  import org.apache.commons.altrmi.common.OpenConnectionReply;
  import org.apache.commons.altrmi.common.AltrmiInvocationException;
  import org.apache.commons.altrmi.common.PingRequest;
  import org.apache.commons.altrmi.common.PingReply;
  import org.apache.commons.altrmi.client.AltrmiClientInvocationHandler;
  
  import java.util.HashMap;
  import java.util.Collection;
  import java.util.List;
  import java.util.Iterator;
  
  public class RotatingMultipleInvocationHandler extends 
AbstractMultipleInvocationHandler {
  
      private HashMap mSessionHandlerMap = new HashMap();
      private int mNext;
  
      /**
       * Method handleInvocation
       *
       *
       * @param request
       *
       * @return
       *
       */
      public AltrmiReply handleInvocation(AltrmiRequest request) {
          if (request instanceof Sessionable) {
              Long session = ((Sessionable) request).getSession();
              if (mSessionHandlerMap.containsKey(session)) {
                  AltrmiClientInvocationHandler cih = (AltrmiClientInvocationHandler) 
mSessionHandlerMap.get(session);
                  return cih.handleInvocation(request);
              } else {
                  throw new AltrmiInvocationException("No handler registered for ths 
session");
              }
          } else if (request instanceof OpenConnectionRequest) {
              List hostContexts = mMultipleHostContext.getHostContexts();
              if (mNext >= hostContexts.size()) {
                  mNext = 0;
              }
              AltrmiClientInvocationHandler cih = (AltrmiClientInvocationHandler) 
hostContexts.get(mNext++);
              AltrmiReply ar = cih.handleInvocation(request);
              if (ar instanceof OpenConnectionReply) {
                  Long session = ((OpenConnectionReply) ar).getSession();
                  mSessionHandlerMap.put(session, cih);
              }
              return ar;
          } else if (request instanceof PingRequest) {
              AltrmiReply pingReply = null;
              List hostContexts = mMultipleHostContext.getHostContexts();
              for (Iterator iterator = hostContexts.iterator(); iterator.hasNext();) {
                  AltrmiClientInvocationHandler cih = (AltrmiClientInvocationHandler) 
iterator.next();
                  try {
                    AltrmiReply ar = cih.handleInvocation(request);
                    if (pingReply == null && ar instanceof PingReply) {
                        pingReply = ar;
                    }
                  } catch (Exception e) {}
              }
              return pingReply;
          } else {
              // class request
              List hostContexts = mMultipleHostContext.getHostContexts();
              return ((AltrmiClientInvocationHandler) 
hostContexts.get(0)).handleInvocation(request);
          }
      }
  }
  
  
  
  1.5       +2 -2      
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/LookupRequest.java
  
  Index: LookupRequest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/LookupRequest.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LookupRequest.java        21 Jan 2002 20:10:34 -0000      1.4
  +++ LookupRequest.java        21 Jan 2002 21:19:49 -0000      1.5
  @@ -20,9 +20,9 @@
    *
    *
    * @author Paul Hammant <a 
href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]</a>
  - * @version $Revision: 1.4 $
  + * @version $Revision: 1.5 $
    */
  -public final class LookupRequest extends PublishedNameRequest {
  +public final class LookupRequest extends PublishedNameRequest implements 
Sessionable {
   
       private AltrmiAuthentication mAltrmiAuthentication;
       private Long mSession;
  
  
  
  1.4       +2 -2      
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/MethodRequest.java
  
  Index: MethodRequest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/MethodRequest.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MethodRequest.java        18 Jan 2002 11:03:20 -0000      1.3
  +++ MethodRequest.java        21 Jan 2002 21:19:49 -0000      1.4
  @@ -20,9 +20,9 @@
    *
    *
    * @author Paul Hammant <a 
href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]</a>
  - * @version $Revision: 1.3 $
  + * @version $Revision: 1.4 $
    */
  -public class MethodRequest extends PublishedNameRequest {
  +public class MethodRequest extends PublishedNameRequest implements Sessionable {
   
       private String mMethodSignature;
       private Object[] mArgs;
  
  
  
  1.4       +2 -2      
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/OpenConnectionReply.java
  
  Index: OpenConnectionReply.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/OpenConnectionReply.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- OpenConnectionReply.java  21 Jan 2002 20:10:34 -0000      1.3
  +++ OpenConnectionReply.java  21 Jan 2002 21:19:49 -0000      1.4
  @@ -20,9 +20,9 @@
    *
    *
    * @author Paul Hammant <a 
href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]</a>
  - * @version $Revision: 1.3 $
  + * @version $Revision: 1.4 $
    */
  -public final class OpenConnectionReply extends AltrmiReply {
  +public final class OpenConnectionReply extends AltrmiReply implements Sessionable {
   
       private String mTextToSign;
       private Long mSession;
  
  
  
  1.1                  
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/Sessionable.java
  
  Index: Sessionable.java
  ===================================================================
  
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.commons.altrmi.common;
  
  /**
   * Interface Sessionable
   *
   *
   * @author Paul Hammant <a 
href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]</a>
   * @version * $Revision: 1.1 $
   */
  public interface Sessionable {
  
      /**
       * Method getSession
       *
       * @return
       *
       */
      Long getSession();
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to