gdamour     2005/12/21 09:21:50

  Modified:    modules/core/src/java/org/openejb/client
                        AppClientJNDIContext.java Client.java
                        EJBHomeHandle.java EJBHomeHandler.java
                        EJBHomeProxyHandle.java EJBInvocationHandler.java
                        EJBObjectHandle.java EJBObjectHandler.java
                        EJBObjectProxyHandle.java EJBResponse.java
                        EntityEJBHomeHandler.java
                        EntityEJBObjectHandler.java JNDIContext.java
                        JNDIResponse.java ServerMetaData.java
                        StatefulEJBHomeHandler.java
                        StatefulEJBObjectHandler.java
                        StatelessEJBHomeHandler.java
                        StatelessEJBObjectHandler.java
  Added:       modules/core/src/java/org/openejb/client
                        ClusteredResponse.java RequestInfo.java
                        ResponseInfo.java
  Log:

  GERONIMO-1397 Clustering of SFSB
  
  First step of many others to add the clustering of SFSB.
  
  This check-in adds the following features:
  * definition of an EJBClusterManager, which abstracts an EJB Cluster node;
  * this EJB cluster node is a standard GBean (the default or
  WADI implementation is DefaultEJBClusterManager);
  * in an openejb-jar.xml DD, a SFSB can declare a reference to this node via
  the ejb-cluster-reference element;
  * when the SFSB container is started, the EJB cluster node notifies
  the cluster that it is running a specific SFSB container;
  * when a clustered SFSB InstanceContext is created, an array of nodes running
  the container of this SFSB is associated to the InstanceContext. Note that
  this array of nodes is updated upon start-up of a clustered SFSB container or
  upon node failure;
  * this array of nodes capable of running the created SFSB is propagated to
  clients. Actually, this array is propagated at each EJB invocation.
  
  Revision  Changes    Path
  1.10      +9 -8      
openejb/modules/core/src/java/org/openejb/client/AppClientJNDIContext.java
  
  Index: AppClientJNDIContext.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/AppClientJNDIContext.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AppClientJNDIContext.java 1 Dec 2005 08:34:50 -0000       1.9
  +++ AppClientJNDIContext.java 21 Dec 2005 14:21:49 -0000      1.10
  @@ -50,8 +50,8 @@
   
   import org.apache.geronimo.gbean.GBeanInfo;
   import org.apache.geronimo.gbean.GBeanInfoBuilder;
  -import org.apache.geronimo.naming.java.RootContext;
   import org.apache.geronimo.kernel.Kernel;
  +import org.apache.geronimo.naming.java.RootContext;
   import org.openejb.client.naming.java.javaURLContextFactory;
   
   /**
  @@ -71,14 +71,15 @@
   
       public void startClient(ObjectName appClientModuleName, Kernel kernel, 
ClassLoader classLoader) throws Exception {
           try {
  -            ServerMetaData serverMetaData = new ServerMetaData(host, port);
  -            JNDIResponse res = new JNDIResponse(serverMetaData);
  +            ServerMetaData serverMetaData = new ServerMetaData("BOOT", host, 
port);
  +            JNDIResponse res = new JNDIResponse();
  +            ResponseInfo resInfo = new ResponseInfo(res);
               JNDIRequest req = new JNDIRequest(JNDIRequest.JNDI_LOOKUP, 
appClientModuleName.toString(), "");
  -
  -            Client.request(req, res, serverMetaData);
  +            RequestInfo reqInfo = new RequestInfo(req, new ServerMetaData[] 
{serverMetaData});
  +            
  +            Client.request(reqInfo, resInfo);
   
               context = (Context) res.getResult();
  -
           } catch (Exception e) {
               NamingException namingException = new NamingException("Unable to 
retrieve J2EE AppClient's JNDI Context");
               namingException.initCause(e);
  
  
  
  1.6       +43 -15    
openejb/modules/core/src/java/org/openejb/client/Client.java
  
  Index: Client.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/Client.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Client.java       11 Nov 2005 01:36:37 -0000      1.5
  +++ Client.java       21 Dec 2005 14:21:49 -0000      1.6
  @@ -44,9 +44,16 @@
    */
   package org.openejb.client;
   
  -import java.io.*;
  +import java.io.IOException;
  +import java.io.InputStream;
  +import java.io.ObjectInput;
  +import java.io.ObjectOutput;
  +import java.io.ObjectOutputStream;
  +import java.io.OutputStream;
   import java.rmi.RemoteException;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
   import org.openejb.server.ejbd.EJBObjectInputStream;
   
   /**
  @@ -54,11 +61,14 @@
    * @since 11/25/2001
    */
   public class Client {
  -
  +    private static final Log log = LogFactory.getLog(Client.class);
  +    
       private static final ProtocolMetaData PROTOCOL_VERSION = new 
ProtocolMetaData("2.0");
   
  -    public static Response request(Request req, Response res, ServerMetaData 
server) throws RemoteException {
  -        if ( server == null ) throw new IllegalArgumentException("Server 
instance cannot be null");
  +    public static void request(RequestInfo reqInfo, ResponseInfo resInfo) 
throws RemoteException {
  +        Request req = reqInfo.getRequest();
  +        ServerMetaData[] servers = reqInfo.getServers();
  +        if ( servers == null || servers.length == 0) throw new 
IllegalArgumentException("Server instance cannot be null");
   
           OutputStream out       = null;
           ObjectOutput objectOut = null;
  @@ -69,12 +79,23 @@
               /*----------------------------*/
               /* Get a connection to server */
               /*----------------------------*/
  -            try{
  -                conn = ConnectionManager.getConnection( server );
  -            } catch (IOException e){
  -                throw new RemoteException("Cannot access server: 
"+server.address+":"+server.port+" Exception: ", e );
  -            } catch (Throwable e){
  -                throw new RemoteException("Cannot access server: 
"+server.address+":"+server.port+" due to an unknown exception in the OpenEJB 
client: ", e );
  +            for (int i = 0; i < servers.length && null == conn; i++) {
  +                ServerMetaData server = servers[i];
  +                try{
  +                    conn = ConnectionManager.getConnection( server );
  +                } catch (IOException e){
  +                    log.error("Cannot access server: 
"+server.address+":"+server.port+" Exception: ", e);
  +                } catch (Throwable e){
  +                    log.error("Cannot access server: 
"+server.address+":"+server.port+" due to an unknown exception in the OpenEJB 
client: ", e );
  +                }
  +            }
  +            if (null == conn) {
  +                StringBuffer buffer = new StringBuffer();
  +                for (int i = 0; i < servers.length; i++) {
  +                    ServerMetaData server = servers[i];
  +                    buffer.append("Server #" + i + ": " + server);
  +                }
  +                throw new RemoteException("Cannot access servers: " + 
buffer);
               }
   
               /*----------------------------------*/
  @@ -103,9 +124,7 @@
               /* Write request type               */
               /*----------------------------------*/
               try{
  -
                   out.write( req.getRequestType() );
  -
               } catch (IOException e){
                   throw new RemoteException("Cannot write the request type to 
the server: " , e );
   
  @@ -179,6 +198,8 @@
                   throw new RemoteException("Cannot open object input stream 
to server ("+protocolMetaData.getSpec() +") : "+e.getMessage() , e );
               }
   
  +            Response res = resInfo.getResponse();
  +            
               /*----------------------------------*/
               /* Read response                    */
               /*----------------------------------*/
  @@ -194,7 +215,15 @@
               } catch (Throwable e){
                   throw new RemoteException("Error reading response from 
server ("+protocolMetaData.getSpec() +") : "+e.getMessage() , e );
               }
  -
  +            
  +            if (res instanceof ClusteredResponse) {
  +                ClusteredResponse clusteredResponse = (ClusteredResponse) 
res;
  +                ServerMetaData[] newServers = clusteredResponse.getServers();
  +                if (null == newServers || newServers.length == 0) {
  +                    newServers = servers;
  +                }
  +                resInfo.setServers(newServers);
  +            }
           } finally {
               try {
                   if (conn != null) {
  @@ -205,7 +234,6 @@
                   System.out.println("Error closing connection with server: 
"+t.getMessage() );
               }
           }
  -        return res;
       }
   
   }
  
  
  
  1.5       +6 -5      
openejb/modules/core/src/java/org/openejb/client/EJBHomeHandle.java
  
  Index: EJBHomeHandle.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EJBHomeHandle.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- EJBHomeHandle.java        11 Feb 2005 22:30:15 -0000      1.4
  +++ EJBHomeHandle.java        21 Dec 2005 14:21:49 -0000      1.5
  @@ -48,6 +48,7 @@
   import java.io.ObjectInput;
   import java.io.ObjectOutput;
   import java.rmi.RemoteException;
  +
   import javax.ejb.EJBHome;
   
   /**
  @@ -99,7 +100,8 @@
           out.writeByte(ejb.type);
           out.writeUTF(ejb.deploymentID);
           out.writeShort(ejb.deploymentCode);
  -        handler.server.writeExternal(out);
  +        
  +        out.writeObject(handler.servers);
       }
   
       /**
  @@ -107,7 +109,6 @@
        */
       public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
           EJBMetaDataImpl ejb = new EJBMetaDataImpl();
  -        ServerMetaData server = new ServerMetaData();
   
           ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
           if (classLoader == null) {
  @@ -127,9 +128,9 @@
           ejb.deploymentID = in.readUTF();
           ejb.deploymentCode = in.readShort();
   
  -        server.readExternal(in);
  +        ServerMetaData[] servers = (ServerMetaData[]) in.readObject();
   
  -        handler = EJBHomeHandler.createEJBHomeHandler(ejb, server);
  +        handler = EJBHomeHandler.createEJBHomeHandler(ejb, servers);
           ejbHomeProxy = handler.createEJBHomeProxy();
       }
   
  
  
  
  1.7       +10 -10    
openejb/modules/core/src/java/org/openejb/client/EJBHomeHandler.java
  
  Index: EJBHomeHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EJBHomeHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- EJBHomeHandler.java       20 Oct 2005 22:19:23 -0000      1.6
  +++ EJBHomeHandler.java       21 Dec 2005 14:21:49 -0000      1.7
  @@ -50,12 +50,12 @@
   import java.io.ObjectOutput;
   import java.lang.reflect.Method;
   import java.rmi.RemoteException;
  +
   import javax.ejb.EJBHome;
   import javax.ejb.Handle;
   
  -import org.openejb.EJBComponentType;
  -
   import org.apache.geronimo.security.ContextManager;
  +import org.openejb.EJBComponentType;
   
   
   /**
  @@ -75,25 +75,25 @@
       public EJBHomeHandler() {
       }
   
  -    public EJBHomeHandler(EJBMetaDataImpl ejb, ServerMetaData server) {
  -        super(ejb, server);
  +    public EJBHomeHandler(EJBMetaDataImpl ejb, ServerMetaData[] servers) {
  +        super(ejb, servers);
       }
   
  -    public static EJBHomeHandler createEJBHomeHandler(EJBMetaDataImpl ejb, 
ServerMetaData server) {
  +    public static EJBHomeHandler createEJBHomeHandler(EJBMetaDataImpl ejb, 
ServerMetaData[] servers) {
   
           switch (ejb.type) {
               case EJBComponentType.BMP_ENTITY:
               case EJBComponentType.CMP_ENTITY:
   
  -                return new EntityEJBHomeHandler(ejb, server);
  +                return new EntityEJBHomeHandler(ejb, servers);
   
               case EJBComponentType.STATEFUL:
   
  -                return new StatefulEJBHomeHandler(ejb, server);
  +                return new StatefulEJBHomeHandler(ejb, servers);
   
               case EJBComponentType.STATELESS:
   
  -                return new StatelessEJBHomeHandler(ejb, server);
  +                return new StatelessEJBHomeHandler(ejb, servers);
           }
           return null;
   
  @@ -234,7 +234,7 @@
               case EJB_OK:
                   // Create the EJBObject proxy
                   Object primKey = res.getResult();
  -                EJBObjectHandler handler = 
EJBObjectHandler.createEJBObjectHandler(ejb, server, primKey);
  +                EJBObjectHandler handler = 
EJBObjectHandler.createEJBObjectHandler(ejb, servers, primKey);
                   handler.setEJBHomeProxy((EJBHomeProxy) proxy);
                   //TODO:1: Add the proxy to the handler registry
                   return handler.createEJBObjectProxy();
  
  
  
  1.4       +6 -5      
openejb/modules/core/src/java/org/openejb/client/EJBHomeProxyHandle.java
  
  Index: EJBHomeProxyHandle.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EJBHomeProxyHandle.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EJBHomeProxyHandle.java   8 Sep 2004 04:00:18 -0000       1.3
  +++ EJBHomeProxyHandle.java   21 Dec 2005 14:21:49 -0000      1.4
  @@ -49,6 +49,8 @@
   import java.io.ObjectInput;
   import java.io.ObjectOutput;
   
  +import org.activeio.xnet.ServerService;
  +
   
   public class EJBHomeProxyHandle implements Externalizable {
   
  @@ -73,7 +75,7 @@
           out.writeByte(ejb.type);
           out.writeUTF(ejb.deploymentID);
           out.writeShort(ejb.deploymentCode);
  -        handler.server.writeExternal(out);
  +        out.writeObject(handler.servers);
       }
   
       /**
  @@ -81,7 +83,6 @@
        */
       public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
           EJBMetaDataImpl ejb = new EJBMetaDataImpl();
  -        ServerMetaData server = new ServerMetaData();
   
           ejb.homeClass = (Class) in.readObject();
           ejb.remoteClass = (Class) in.readObject();
  @@ -90,9 +91,9 @@
           ejb.deploymentID = in.readUTF();
           ejb.deploymentCode = in.readShort();
   
  -        server.readExternal(in);
  +        ServerMetaData[] servers = (ServerMetaData[]) in.readObject();
   
  -        handler = EJBHomeHandler.createEJBHomeHandler(ejb, server);
  +        handler = EJBHomeHandler.createEJBHomeHandler(ejb, servers);
   
           handler.ejb.ejbHomeProxy = handler.createEJBHomeProxy();
       }
  
  
  
  1.3       +15 -8     
openejb/modules/core/src/java/org/openejb/client/EJBInvocationHandler.java
  
  Index: EJBInvocationHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EJBInvocationHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EJBInvocationHandler.java 30 Jul 2004 19:03:44 -0000      1.2
  +++ EJBInvocationHandler.java 21 Dec 2005 14:21:49 -0000      1.3
  @@ -126,8 +126,10 @@
       /**
        * The ServerMetaData object containing the information needed to 
        * send invokations to the EJB Server.
  +     * This array identifies all the EJB servers running the target bean
  +     * deployment.
        */
  -    protected transient ServerMetaData server;
  +    protected transient ServerMetaData[] servers;
   
       /**
        * The primary key of the bean deployment or null if the deployment
  @@ -141,13 +143,13 @@
       public EJBInvocationHandler(){
       }
       
  -    public EJBInvocationHandler(EJBMetaDataImpl ejb, ServerMetaData server){
  +    public EJBInvocationHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers){
           this.ejb        = ejb;
  -        this.server     = server;
  +        this.servers     = servers;
       }
       
  -    public EJBInvocationHandler(EJBMetaDataImpl ejb, ServerMetaData server, 
Object primaryKey){
  -        this(ejb, server);
  +    public EJBInvocationHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers, Object primaryKey){
  +        this(ejb, servers);
           this.primaryKey = primaryKey;
       }
   
  @@ -204,7 +206,12 @@
       }
   
       protected EJBResponse request(EJBRequest req) throws Exception {
  -        return (EJBResponse) Client.request(req, new EJBResponse(), server);
  +        RequestInfo reqInfo = new RequestInfo(req, servers);
  +        EJBResponse res = new EJBResponse();
  +        ResponseInfo resInfo = new ResponseInfo(res);
  +        Client.request(reqInfo, resInfo);
  +        servers = resInfo.getServers();
  +        return res;
       }
       
       /**
  @@ -215,7 +222,7 @@
        * removed, by calling one of the remove( ) methods.
        */
       protected void invalidateReference(){
  -        this.server     = null;
  +        this.servers     = null;
           this.ejb        = null;
           this.inProxyMap = false;
           this.isInvalidReference = true;
  
  
  
  1.5       +7 -5      
openejb/modules/core/src/java/org/openejb/client/EJBObjectHandle.java
  
  Index: EJBObjectHandle.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EJBObjectHandle.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- EJBObjectHandle.java      11 Feb 2005 22:30:15 -0000      1.4
  +++ EJBObjectHandle.java      21 Dec 2005 14:21:49 -0000      1.5
  @@ -112,7 +112,9 @@
           out.writeByte(ejb.type);
           out.writeUTF(ejb.deploymentID);
           out.writeShort(ejb.deploymentCode);
  -        handler.server.writeExternal(out);
  +        
  +        out.writeObject(handler.servers);
  +
           out.writeObject(handler.primaryKey);
       }
   
  @@ -121,7 +123,6 @@
        */
       public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
           EJBMetaDataImpl ejb = new EJBMetaDataImpl();
  -        ServerMetaData server = new ServerMetaData();
   
           ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
           if (classLoader == null) {
  @@ -141,10 +142,11 @@
           ejb.deploymentID = in.readUTF();
           ejb.deploymentCode = in.readShort();
   
  -        server.readExternal(in);
  +        ServerMetaData[] servers = (ServerMetaData[]) in.readObject();
  +        
           Object primaryKey = in.readObject();
   
  -        handler = EJBObjectHandler.createEJBObjectHandler(ejb, server, 
primaryKey);
  +        handler = EJBObjectHandler.createEJBObjectHandler(ejb, servers, 
primaryKey);
           ejbObjectProxy = handler.createEJBObjectProxy();
       }
   
  
  
  
  1.7       +10 -10    
openejb/modules/core/src/java/org/openejb/client/EJBObjectHandler.java
  
  Index: EJBObjectHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EJBObjectHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- EJBObjectHandler.java     20 Oct 2005 22:19:23 -0000      1.6
  +++ EJBObjectHandler.java     21 Dec 2005 14:21:49 -0000      1.7
  @@ -85,33 +85,33 @@
       public EJBObjectHandler() {
       }
   
  -    public EJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData server) {
  -        super(ejb, server);
  +    public EJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData[] servers) {
  +        super(ejb, servers);
       }
   
  -    public EJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData server, 
Object primaryKey) {
  -        super(ejb, server, primaryKey);
  +    public EJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData[] servers, 
Object primaryKey) {
  +        super(ejb, servers, primaryKey);
       }
   
       protected void setEJBHomeProxy(EJBHomeProxy ejbHome) {
           this.ejbHome = ejbHome;
       }
   
  -    public static EJBObjectHandler createEJBObjectHandler(EJBMetaDataImpl 
ejb, ServerMetaData server, Object primaryKey) {
  +    public static EJBObjectHandler createEJBObjectHandler(EJBMetaDataImpl 
ejb, ServerMetaData[] servers, Object primaryKey) {
   
           switch (ejb.type) {
               case EJBComponentType.BMP_ENTITY:
               case EJBComponentType.CMP_ENTITY:
   
  -                return new EntityEJBObjectHandler(ejb, server, primaryKey);
  +                return new EntityEJBObjectHandler(ejb, servers, primaryKey);
   
               case EJBComponentType.STATEFUL:
   
  -                return new StatefulEJBObjectHandler(ejb, server, primaryKey);
  +                return new StatefulEJBObjectHandler(ejb, servers, 
primaryKey);
   
               case EJBComponentType.STATELESS:
   
  -                return new StatelessEJBObjectHandler(ejb, server, 
primaryKey);
  +                return new StatelessEJBObjectHandler(ejb, servers, 
primaryKey);
           }
           return null;
       }
  @@ -228,7 +228,7 @@
   
       protected Object getEJBHome(Method method, Object[] args, Object proxy) 
throws Throwable {
           if (ejbHome == null) {
  -            ejbHome = EJBHomeHandler.createEJBHomeHandler(ejb, 
server).createEJBHomeProxy();
  +            ejbHome = EJBHomeHandler.createEJBHomeHandler(ejb, 
servers).createEJBHomeProxy();
           }
           return ejbHome;
       }
  
  
  
  1.5       +7 -5      
openejb/modules/core/src/java/org/openejb/client/EJBObjectProxyHandle.java
  
  Index: EJBObjectProxyHandle.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EJBObjectProxyHandle.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- EJBObjectProxyHandle.java 17 Sep 2005 22:18:18 -0000      1.4
  +++ EJBObjectProxyHandle.java 21 Dec 2005 14:21:49 -0000      1.5
  @@ -75,7 +75,9 @@
           out.writeByte(ejb.type);
           out.writeUTF(ejb.deploymentID);
           out.writeShort(ejb.deploymentCode);
  -        handler.server.writeExternal(out);
  +        
  +        out.writeObject(handler.servers);
  +
           out.writeObject(handler.primaryKey);
       }
   
  @@ -84,7 +86,6 @@
        */
       public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
           EJBMetaDataImpl ejb = new EJBMetaDataImpl();
  -        ServerMetaData server = new ServerMetaData();
   
           ejb.homeClass = (Class) in.readObject();
           ejb.remoteClass = (Class) in.readObject();
  @@ -93,10 +94,11 @@
           ejb.deploymentID = in.readUTF();
           ejb.deploymentCode = in.readShort();
   
  -        server.readExternal(in);
  +        ServerMetaData[] servers = (ServerMetaData[]) in.readObject();
  +
           Object primaryKey = in.readObject();
   
  -        handler = EJBObjectHandler.createEJBObjectHandler(ejb, server, 
primaryKey);
  +        handler = EJBObjectHandler.createEJBObjectHandler(ejb, servers, 
primaryKey);
   
       }
   
  
  
  
  1.3       +16 -5     
openejb/modules/core/src/java/org/openejb/client/EJBResponse.java
  
  Index: EJBResponse.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EJBResponse.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EJBResponse.java  17 Mar 2005 23:56:31 -0000      1.2
  +++ EJBResponse.java  21 Dec 2005 14:21:49 -0000      1.3
  @@ -47,6 +47,7 @@
   import java.io.IOException;
   import java.io.ObjectInput;
   import java.io.ObjectOutput;
  +
   import javax.naming.Context;
   import javax.naming.InitialContext;
   import javax.naming.NamingException;
  @@ -58,14 +59,12 @@
    * 
    * @since 11/25/2001
    */
  -public class EJBResponse implements Response {
  -    
  -
  +public class EJBResponse implements ClusteredResponse {
       private transient int responseCode = -1;
       private transient Object result;
  +    private transient ServerMetaData[] servers;
   
       public EJBResponse(){
  -
       }
   
       public EJBResponse(int code, Object obj){
  @@ -86,6 +85,15 @@
           this.result       = result;
       }
   
  +
  +    public ServerMetaData[] getServers() {
  +        return servers;
  +    }
  +
  +    public void setServers(ServerMetaData[] servers) {
  +        this.servers = servers;
  +    }
  +
       public String toString(){
           StringBuffer s = null;
           switch (responseCode) {
  @@ -153,6 +161,8 @@
               }
               stub.connect(orb);
           }
  +        
  +        servers = (ServerMetaData[]) in.readObject();
       }
       
       /**
  @@ -174,5 +184,6 @@
           //out.writeByte((byte)responseCode);
           out.writeByte(responseCode);
           out.writeObject(result);
  +        out.writeObject(servers);
       }
   }
  
  
  
  1.6       +6 -6      
openejb/modules/core/src/java/org/openejb/client/EntityEJBHomeHandler.java
  
  Index: EntityEJBHomeHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EntityEJBHomeHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- EntityEJBHomeHandler.java 21 Feb 2005 08:55:13 -0000      1.5
  +++ EntityEJBHomeHandler.java 21 Dec 2005 14:21:49 -0000      1.6
  @@ -59,8 +59,8 @@
       public EntityEJBHomeHandler(){
       }
       
  -    public EntityEJBHomeHandler(EJBMetaDataImpl ejb, ServerMetaData server){
  -        super(ejb, server);
  +    public EntityEJBHomeHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers){
  +        super(ejb, servers);
       }
      
       /**
  @@ -145,7 +145,7 @@
               if (null == primKey) {
                   return null;
               }
  -            handler = 
EJBObjectHandler.createEJBObjectHandler(ejb,server,primKey);
  +            handler = 
EJBObjectHandler.createEJBObjectHandler(ejb,servers,primKey);
               handler.setEJBHomeProxy((EJBHomeProxy)proxy);
               registerHandler(ejb.deploymentID+":"+primKey, handler);
               return handler.createEJBObjectProxy();
  @@ -162,7 +162,7 @@
                   if (null == primKey) {
                       continue;
                   }
  -                handler = 
EJBObjectHandler.createEJBObjectHandler(ejb,server,primKey);
  +                handler = 
EJBObjectHandler.createEJBObjectHandler(ejb,servers,primKey);
                   handler.setEJBHomeProxy((EJBHomeProxy)proxy);
                   registerHandler(ejb.deploymentID+":"+primKey, handler);
                   primaryKeys[i] = handler.createEJBObjectProxy();
  @@ -177,7 +177,7 @@
                   if (null == primKey) {
                       continue;
                   }
  -                handler = 
EJBObjectHandler.createEJBObjectHandler(ejb,server,primKey);
  +                handler = 
EJBObjectHandler.createEJBObjectHandler(ejb,servers,primKey);
                   handler.setEJBHomeProxy((EJBHomeProxy)proxy);
                   registerHandler(ejb.deploymentID+":"+primKey, handler);
                   primaryKeys[i] = handler.createEJBObjectProxy();
  
  
  
  1.4       +5 -5      
openejb/modules/core/src/java/org/openejb/client/EntityEJBObjectHandler.java
  
  Index: EntityEJBObjectHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/EntityEJBObjectHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EntityEJBObjectHandler.java       15 Feb 2005 03:24:01 -0000      1.3
  +++ EntityEJBObjectHandler.java       21 Dec 2005 14:21:50 -0000      1.4
  @@ -62,12 +62,12 @@
       public EntityEJBObjectHandler(){
       }
       
  -    public EntityEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData 
server){
  -        super(ejb, server);
  +    public EntityEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers){
  +        super(ejb, servers);
       }
       
  -    public EntityEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData 
server, Object primaryKey){
  -        super(ejb, server, primaryKey);
  +    public EntityEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers, Object primaryKey){
  +        super(ejb, servers, primaryKey);
           registryId = ejb.deploymentID+":"+primaryKey;
           registerHandler( registryId, this );
       }
  
  
  
  1.7       +19 -8     
openejb/modules/core/src/java/org/openejb/client/JNDIContext.java
  
  Index: JNDIContext.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/JNDIContext.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JNDIContext.java  20 Oct 2005 22:19:23 -0000      1.6
  +++ JNDIContext.java  21 Dec 2005 14:21:50 -0000      1.7
  @@ -59,7 +59,7 @@
   public class JNDIContext implements Serializable, InitialContextFactory, 
Context, RequestMethods, ResponseCodes {
   
       private transient String tail = "/";
  -    private transient ServerMetaData server;
  +    private transient ServerMetaData[] servers;
       private transient Hashtable env;
   
       /**
  @@ -85,7 +85,7 @@
        */
       public JNDIContext(JNDIContext that){
           this.tail   = that.tail;
  -        this.server = that.server;
  +        this.servers = that.servers;
           this.env    = (Hashtable)that.env.clone();
       }
   
  @@ -105,7 +105,11 @@
   
   
       private JNDIResponse request(JNDIRequest req) throws Exception {
  -        return (JNDIResponse) Client.request(req, new JNDIResponse(), 
server);
  +        RequestInfo reqInfo = new RequestInfo(req, servers);
  +        JNDIResponse res = new JNDIResponse();
  +        ResponseInfo resInfo = new ResponseInfo(res);
  +        Client.request(reqInfo, resInfo);
  +        return res;
       }
   
       public static void print(String s){
  @@ -117,7 +121,11 @@
   
       //TODO:0:Write authentication module
       protected AuthenticationResponse 
requestAuthorization(AuthenticationRequest req) throws java.rmi.RemoteException 
{
  -        return (AuthenticationResponse) Client.request(req, new 
AuthenticationResponse(), server);
  +        RequestInfo reqInfo = new RequestInfo(req, servers);
  +        AuthenticationResponse res = new AuthenticationResponse();
  +        ResponseInfo resInfo = new ResponseInfo(res);
  +        Client.request(reqInfo, resInfo);
  +        return res;
       }
   
       //-------------------------------------------------------------//
  @@ -169,9 +177,11 @@
           }
   
           try {
  -            server = new ServerMetaData();
  +            ServerMetaData server = new ServerMetaData();
               server.address = InetAddress.getByName( url.getHost() );
               server.port    = url.getPort();
  +            
  +            servers = new ServerMetaData[] {server};
           } catch (UnknownHostException  e){
               throw new ConfigurationException("Invalid provider 
URL:"+serverURL+": host unknown: "+e.getMessage());
           }
  @@ -198,7 +208,8 @@
   
           switch (res.getResponseCode()) {
               case AUTH_REDIRECT:
  -                server = res.getServer();
  +                ServerMetaData server = res.getServer();
  +                servers = new ServerMetaData[] {server};
                   break;
               case AUTH_DENIED:
                   throw new javax.naming.AuthenticationException("This 
principle is not authorized.");
  @@ -208,7 +219,7 @@
       // Construct a new handler and proxy.
       public EJBHomeProxy createEJBHomeProxy(EJBMetaDataImpl ejbData){
   
  -        EJBHomeHandler handler = 
EJBHomeHandler.createEJBHomeHandler(ejbData, server);
  +        EJBHomeHandler handler = 
EJBHomeHandler.createEJBHomeHandler(ejbData, servers);
           EJBHomeProxy proxy = handler.createEJBHomeProxy();
           handler.ejb.ejbHomeProxy = proxy;
   
  
  
  
  1.7       +1 -8      
openejb/modules/core/src/java/org/openejb/client/JNDIResponse.java
  
  Index: JNDIResponse.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/JNDIResponse.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JNDIResponse.java 21 Jan 2005 06:30:35 -0000      1.6
  +++ JNDIResponse.java 21 Dec 2005 14:21:50 -0000      1.7
  @@ -59,9 +59,6 @@
    * @since 11/25/2001
    */
   public class JNDIResponse implements Response {
  -
  -
  -    private transient ServerMetaData serverMetaData;
       private transient int responseCode = -1;
       private transient Object result;
       private static final int CONTEXT = 1;
  @@ -70,10 +67,6 @@
       private static final int END = 99;
   
       public JNDIResponse(){
  -    }
  -
  -    public JNDIResponse(ServerMetaData serverMetaData) {
  -        this.serverMetaData = serverMetaData;
       }
   
       public JNDIResponse(int code, Object obj){
  
  
  
  1.3       +31 -7     
openejb/modules/core/src/java/org/openejb/client/ServerMetaData.java
  
  Index: ServerMetaData.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/ServerMetaData.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ServerMetaData.java       28 Sep 2005 02:44:45 -0000      1.2
  +++ ServerMetaData.java       21 Dec 2005 14:21:50 -0000      1.3
  @@ -58,6 +58,7 @@
    */
   public class ServerMetaData implements Externalizable{
   
  +    transient String nodeName;
       transient int port;
   
       /**
  @@ -71,11 +72,16 @@
   
       }
       
  -    public ServerMetaData(String host, int port) throws UnknownHostException{
  +    public ServerMetaData(String nodeName, String host, int port) throws 
UnknownHostException{
  +        this.nodeName = nodeName;
           this.address = InetAddress.getByName( host );
           this.port = port;
       }
   
  +    public String getNodeName() {
  +        return nodeName;
  +    }
  +
       public int getPort(){
           return port;
       }
  @@ -92,8 +98,26 @@
           this.address = address;
       }
   
  +    public boolean equals(Object obj) {
  +        if (false == obj instanceof ServerMetaData) {
  +            return false;
  +        }
  +        ServerMetaData other = (ServerMetaData) obj;
  +        
  +        if (false == nodeName.equals(other.nodeName)) {
  +            return false;
  +        } else if (false == address.equals(other.address)) {
  +            return false;
  +        } else if (false == (port == other.port)) {
  +            return false;
  +        }
  +        return true;
  +    }
   
  -
  +    public int hashCode() {
  +        return nodeName.hashCode() * address.hashCode() * port;
  +    }
  +    
       /**
        * The object implements the readExternal method to restore its
        * contents by calling the methods of DataInput for primitive
  @@ -107,6 +131,7 @@
        *              restored cannot be found.
        */
       public void readExternal(ObjectInput in) throws 
IOException,ClassNotFoundException {
  +        nodeName = in.readUTF();
           // byte[] IP = new byte[4];
           
           // IP[0] = in.readByte();
  @@ -155,6 +180,8 @@
        * @exception IOException Includes any I/O exceptions that may occur
        */
       public void writeExternal(ObjectOutput out) throws IOException {
  +        out.writeUTF(nodeName);
  +        
           byte[] addr = address.getAddress();
           
           out.writeByte(addr[0]);
  @@ -164,7 +191,4 @@
           
           out.writeInt(port);
       }
  -
  -}
  -
  -
  +}
  \ No newline at end of file
  
  
  
  1.5       +3 -3      
openejb/modules/core/src/java/org/openejb/client/StatefulEJBHomeHandler.java
  
  Index: StatefulEJBHomeHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/StatefulEJBHomeHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StatefulEJBHomeHandler.java       12 Feb 2005 18:41:50 -0000      1.4
  +++ StatefulEJBHomeHandler.java       21 Dec 2005 14:21:50 -0000      1.5
  @@ -62,8 +62,8 @@
       public StatefulEJBHomeHandler(){
       }
       
  -    public StatefulEJBHomeHandler(EJBMetaDataImpl ejb, ServerMetaData 
server){
  -        super(ejb, server);
  +    public StatefulEJBHomeHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers){
  +        super(ejb, servers);
       }
       
       /**
  
  
  
  1.4       +5 -5      
openejb/modules/core/src/java/org/openejb/client/StatefulEJBObjectHandler.java
  
  Index: StatefulEJBObjectHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/StatefulEJBObjectHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StatefulEJBObjectHandler.java     15 Feb 2005 03:24:01 -0000      1.3
  +++ StatefulEJBObjectHandler.java     21 Dec 2005 14:21:50 -0000      1.4
  @@ -58,12 +58,12 @@
       public StatefulEJBObjectHandler() {
       }
   
  -    public StatefulEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData 
server){
  -        super(ejb, server);
  +    public StatefulEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers){
  +        super(ejb, servers);
       }
       
  -    public StatefulEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData 
server, Object primaryKey){
  -        super(ejb, server, primaryKey);
  +    public StatefulEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers, Object primaryKey){
  +        super(ejb, servers, primaryKey);
           registerHandler( primaryKey, this );
       }
       
  
  
  
  1.4       +3 -3      
openejb/modules/core/src/java/org/openejb/client/StatelessEJBHomeHandler.java
  
  Index: StatelessEJBHomeHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/StatelessEJBHomeHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StatelessEJBHomeHandler.java      30 Jul 2004 19:03:44 -0000      1.3
  +++ StatelessEJBHomeHandler.java      21 Dec 2005 14:21:50 -0000      1.4
  @@ -59,8 +59,8 @@
       public StatelessEJBHomeHandler(){
       }
       
  -    public StatelessEJBHomeHandler(EJBMetaDataImpl ejb, ServerMetaData 
server){
  -        super(ejb, server);
  +    public StatelessEJBHomeHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers){
  +        super(ejb, servers);
       }
       
       /**
  
  
  
  1.3       +5 -5      
openejb/modules/core/src/java/org/openejb/client/StatelessEJBObjectHandler.java
  
  Index: StatelessEJBObjectHandler.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/client/StatelessEJBObjectHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StatelessEJBObjectHandler.java    30 Jul 2004 19:03:44 -0000      1.2
  +++ StatelessEJBObjectHandler.java    21 Dec 2005 14:21:50 -0000      1.3
  @@ -64,12 +64,12 @@
       public StatelessEJBObjectHandler(){
       }
       
  -    public StatelessEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData 
server){
  -        super(ejb, server);
  +    public StatelessEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers){
  +        super(ejb, servers);
       }
       
  -    public StatelessEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData 
server, Object primaryKey){
  -        super(ejb, server, primaryKey);
  +    public StatelessEJBObjectHandler(EJBMetaDataImpl ejb, ServerMetaData[] 
servers, Object primaryKey){
  +        super(ejb, servers, primaryKey);
       }
       
       // This should only be created at the server side and should not 
reference Container
  
  
  
  1.1                  
openejb/modules/core/src/java/org/openejb/client/ClusteredResponse.java
  
  Index: ClusteredResponse.java
  ===================================================================
  /**
   * Redistribution and use of this software and associated documentation
   * ("Software"), with or without modification, are permitted provided
   * that the following conditions are met:
   *
   * 1. Redistributions of source code must retain copyright
   *    statements and notices.  Redistributions must also contain a
   *    copy of this document.
   *
   * 2. Redistributions in binary form must reproduce the
   *    above copyright notice, this list of conditions and the
   *    following disclaimer in the documentation and/or other
   *    materials provided with the distribution.
   *
   * 3. The name "OpenEJB" must not be used to endorse or promote
   *    products derived from this Software without prior written
   *    permission of The OpenEJB Group.  For written permission,
   *    please contact [EMAIL PROTECTED]
   *
   * 4. Products derived from this Software may not be called "OpenEJB"
   *    nor may "OpenEJB" appear in their names without prior written
   *    permission of The OpenEJB Group. OpenEJB is a registered
   *    trademark of The OpenEJB Group.
   *
   * 5. Due credit should be given to the OpenEJB Project
   *    (http://openejb.sf.net/).
   *
   * THIS SOFTWARE IS PROVIDED BY THE OPENEJB GROUP AND CONTRIBUTORS
   * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
   * THE OPENEJB GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   * Copyright 2001 (C) The OpenEJB Group. All Rights Reserved.
   *
   * $Id: ClusteredResponse.java,v 1.1 2005/12/21 14:21:49 gdamour Exp $
   */
  package org.openejb.client;
  
  
  /**
   * 
   * @since 11/25/2001
   */
  public interface ClusteredResponse extends Response {
      ServerMetaData[] getServers();
  }
  
  
  
  
  
  1.1                  
openejb/modules/core/src/java/org/openejb/client/RequestInfo.java
  
  Index: RequestInfo.java
  ===================================================================
  /**
   * Redistribution and use of this software and associated documentation
   * ("Software"), with or without modification, are permitted provided
   * that the following conditions are met:
   *
   * 1. Redistributions of source code must retain copyright
   *    statements and notices.  Redistributions must also contain a
   *    copy of this document.
   *
   * 2. Redistributions in binary form must reproduce the
   *    above copyright notice, this list of conditions and the
   *    following disclaimer in the documentation and/or other
   *    materials provided with the distribution.
   *
   * 3. The name "OpenEJB" must not be used to endorse or promote
   *    products derived from this Software without prior written
   *    permission of The OpenEJB Group.  For written permission,
   *    please contact [EMAIL PROTECTED]
   *
   * 4. Products derived from this Software may not be called "OpenEJB"
   *    nor may "OpenEJB" appear in their names without prior written
   *    permission of The OpenEJB Group. OpenEJB is a registered
   *    trademark of The OpenEJB Group.
   *
   * 5. Due credit should be given to the OpenEJB Project
   *    (http://openejb.org/).
   *
   * THIS SOFTWARE IS PROVIDED BY THE OPENEJB GROUP AND CONTRIBUTORS
   * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
   * THE OPENEJB GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   * Copyright 2005 (C) The OpenEJB Group. All Rights Reserved.
   *
   * $Id: RequestInfo.java,v 1.1 2005/12/21 14:21:50 gdamour Exp $
   */
  package org.openejb.client;
  
  
  
  /**
   * 
   */
  public class RequestInfo {
      private final Request request;
      private final ServerMetaData[] servers;
      
      public RequestInfo(Request request, ServerMetaData[] server) {
          this.request = request;
          this.servers = server;
      }
      
      public Request getRequest() {
          return request;
      }
      
      public ServerMetaData[] getServers() {
          return servers;
      }
  }
  
  
  1.1                  
openejb/modules/core/src/java/org/openejb/client/ResponseInfo.java
  
  Index: ResponseInfo.java
  ===================================================================
  /**
   * Redistribution and use of this software and associated documentation
   * ("Software"), with or without modification, are permitted provided
   * that the following conditions are met:
   *
   * 1. Redistributions of source code must retain copyright
   *    statements and notices.  Redistributions must also contain a
   *    copy of this document.
   *
   * 2. Redistributions in binary form must reproduce the
   *    above copyright notice, this list of conditions and the
   *    following disclaimer in the documentation and/or other
   *    materials provided with the distribution.
   *
   * 3. The name "OpenEJB" must not be used to endorse or promote
   *    products derived from this Software without prior written
   *    permission of The OpenEJB Group.  For written permission,
   *    please contact [EMAIL PROTECTED]
   *
   * 4. Products derived from this Software may not be called "OpenEJB"
   *    nor may "OpenEJB" appear in their names without prior written
   *    permission of The OpenEJB Group. OpenEJB is a registered
   *    trademark of The OpenEJB Group.
   *
   * 5. Due credit should be given to the OpenEJB Project
   *    (http://openejb.org/).
   *
   * THIS SOFTWARE IS PROVIDED BY THE OPENEJB GROUP AND CONTRIBUTORS
   * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
   * THE OPENEJB GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   * Copyright 2005 (C) The OpenEJB Group. All Rights Reserved.
   *
   * $Id: ResponseInfo.java,v 1.1 2005/12/21 14:21:50 gdamour Exp $
   */
  package org.openejb.client;
  
  
  
  /**
   * 
   */
  public class ResponseInfo {
      private final Response response;
      private ServerMetaData[] servers;
  
      public ResponseInfo(Response response) {
          this.response = response;
      }
      
      public Response getResponse() {
          return response;
      }
      
      public ServerMetaData[] getServers() {
          return servers;
      }
      
      public void setServers(ServerMetaData[] servers) {
          this.servers = servers;
      }
  }
  
  

Reply via email to