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]>