avalon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hamm...@apache.org
Subject cvs commit: jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket CompleteSocketCustomStreamServer.java PartialSocketCustomStreamServer.java PartialSocketObjectStreamServer.java
Date Sun, 13 Oct 2002 13:40:01 GMT
hammant     2002/10/13 06:40:01

  Modified:    altrmi   build.xml
               altrmi/src/java/org/apache/excalibur/altrmi/client/impl
                        AbstractAltrmiFactory.java
                        AbstractSameVmBindableHostContext.java
               altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket
                        SocketCustomStreamHostContext.java
                        SocketObjectStreamHostContext.java
               altrmi/src/java/org/apache/excalibur/altrmi/registry
                        Registry.java
               altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket
                        CompleteSocketCustomStreamServer.java
                        PartialSocketCustomStreamServer.java
                        PartialSocketObjectStreamServer.java
  Log:
  Client no longer directly references Registry.  Can be in different classloader or absent.
  
  Revision  Changes    Path
  1.41      +1 -0      jakarta-avalon-excalibur/altrmi/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/build.xml,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- build.xml	13 Oct 2002 11:54:24 -0000	1.40
  +++ build.xml	13 Oct 2002 13:40:00 -0000	1.41
  @@ -321,6 +321,7 @@
                   <include name="org/apache/excalibur/altrmi/common/*.java"/>
                   <include name="org/apache/excalibur/altrmi/generator/*.java"/>
                   <include name="org/apache/excalibur/altrmi/server/*.java"/>
  +                <include name="org/apache/excalibur/altrmi/registry/**.java"/>
                   <include name="org/apache/excalibur/altrmi/server/impl/*.java"/>
               
                   <include name="org/apache/excalibur/altrmi/server/impl/adapters/*.java"/>
                   <include name="org/apache/excalibur/altrmi/server/impl/callback/*.java"/>
  
  
  
  1.10      +21 -13    jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractAltrmiFactory.java
  
  Index: AbstractAltrmiFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractAltrmiFactory.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AbstractAltrmiFactory.java	13 Oct 2002 11:54:25 -0000	1.9
  +++ AbstractAltrmiFactory.java	13 Oct 2002 13:40:00 -0000	1.10
  @@ -120,15 +120,23 @@
                   AbstractSameVmBindableHostContext sameVmBindableHostContext =
                           (AbstractSameVmBindableHostContext) m_hostContext;
                   m_hostContext = sameVmBindableHostContext.makeSameVmHostContext();
  -                m_clientInvocationHandler = m_hostContext.getClientInvocationHandler();
  -                reply = m_clientInvocationHandler.handleInvocation(new OpenConnectionRequest()
);
  -
  +                if (m_hostContext == null)
  +                {
  +                    // Registry not found, or a different instance to the one
  +                    // the server placed its piped instance in.
  +                    // revert to non optimized.
  +                    m_clientInvocationHandler.handleInvocation(new OpenConnectionRequest(
null ) );
  +                }
  +                else
  +                {
  +                    m_clientInvocationHandler = m_hostContext.getClientInvocationHandler();
  +                    reply = m_clientInvocationHandler.handleInvocation(new OpenConnectionRequest()
);
  +                }
               }
               else
               {
                   throw new IOException("SameVM instruction for non rebindable host context.");
               }
  -
           }
   
           if( reply instanceof OpenConnectionReply )
  @@ -352,8 +360,8 @@
               };
           }
       }
  -    
  -    
  +
  +
       /**
        * Wraps the reference to the remote obj within the FacadeRefHolder obj.
        * @param obj
  @@ -367,10 +375,10 @@
   
           return new FacadeRefHolder( refID, objectName );
       }
  -    
   
  -    
  -       
  +
  +
  +
       public void marshallCorrection( String methodSignature, Object[] args, Class[] argClasses
)
       {
   
  @@ -383,13 +391,13 @@
               if(args[i] instanceof AltrmiProxy)
               {
                   AltrmiProxy proxy = (AltrmiProxy)args[i];
  -    
  +
                       if( getReferenceID( proxy ) != null )
                       {
                           //The stripping "AltrmiGenerated2" from the proxy names generated
by
                           //ProxyGenerator's:- "AltrmiGenerated2".length()=16
                           String objName = args[i].getClass().getName().substring( 16 );
  -    
  +
                           args[i]= makeFacadeRefHolder( proxy, objName );
                       }
               }
  @@ -399,5 +407,5 @@
               }
           }
       }
  -    
  +
   }
  
  
  
  1.2       +18 -0     jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractSameVmBindableHostContext.java
  
  Index: AbstractSameVmBindableHostContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractSameVmBindableHostContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractSameVmBindableHostContext.java	13 Oct 2002 11:54:25 -0000	1.1
  +++ AbstractSameVmBindableHostContext.java	13 Oct 2002 13:40:00 -0000	1.2
  @@ -11,6 +11,7 @@
   import org.apache.excalibur.altrmi.client.AltrmiClientInvocationHandler;
   
   import java.io.IOException;
  +import java.lang.reflect.Method;
   
   public abstract class AbstractSameVmBindableHostContext extends AbstractHostContext{
   
  @@ -26,5 +27,22 @@
        * @throws IOException if a problem
        */
       public abstract AbstractHostContext makeSameVmHostContext() throws IOException;
  +
  +
  +    protected Object getOptmization(String uniqueID)
  +    {
  +        try
  +        {
  +            Object registry = this.getClass().getClassLoader()
  +                    .loadClass("org.apache.excalibur.altrmi.registry.Registry").newInstance();
  +            //Binder binder = registry.get("/.altrmi/optimizations/" + uniqueID);
  +            Method method = registry.getClass().getMethod("get", new Class[] {String.class});
  +            return method.invoke(registry, new Object[] {"/.altrmi/optimizations/" + uniqueID});
  +        }
  +        catch (Exception e)
  +        {
  +            return null;
  +        }
  +    }
   
   }
  
  
  
  1.4       +29 -11    jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamHostContext.java
  
  Index: SocketCustomStreamHostContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamHostContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SocketCustomStreamHostContext.java	13 Oct 2002 11:54:26 -0000	1.3
  +++ SocketCustomStreamHostContext.java	13 Oct 2002 13:40:00 -0000	1.4
  @@ -11,14 +11,11 @@
   import org.apache.excalibur.altrmi.client.impl.AbstractSameVmBindableHostContext;
   import org.apache.excalibur.altrmi.client.impl.AbstractHostContext;
   import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
  -import org.apache.excalibur.altrmi.registry.Registry;
  -import org.apache.excalibur.altrmi.registry.Bound;
  -import org.apache.excalibur.altrmi.registry.Binder;
  -import org.apache.excalibur.altrmi.registry.BindException;
   
   import java.io.PipedInputStream;
   import java.io.PipedOutputStream;
   import java.io.IOException;
  +import java.lang.reflect.Method;
   
   /**
    * Class SocketCustomStreamHostContext
  @@ -80,21 +77,42 @@
           PipedOutputStream out = new PipedOutputStream();
           try
           {
  -            Registry registry = Registry.getInstance();
  -            Binder binder = registry.get("/.altrmi/optimizations/port=" + m_port);
  -            Bound bound = binder.bind(new Object[] {in, out});
  +            Object binder = getOptmization("port=" + m_port);
  +            if (binder == null)
  +            {
  +                return null;
  +            }
  +            Object bound = bind(binder, in, out);
  +            if (bound == null)
  +            {
  +                return null;
  +            }
               PipedCustomStreamHostContext pipedCustomStreamHostContext
                       = new PipedCustomStreamHostContext(in, out);
               pipedCustomStreamHostContext.initialize();
               return pipedCustomStreamHostContext;
           }
  -        catch (BindException e)
  +        catch (Exception e)
           {
               throw new IOException("Naming exception during bind :" + e.getMessage());
           }
  -        catch (AltrmiConnectionException e)
  +    }
  +
  +    private Object bind(Object object, PipedInputStream inputStream,
  +                       PipedOutputStream outputStream)
  +    {
  +
  +        try
           {
  -            throw new IOException("Connection exception during bind :" + e.getMessage());
  +            Object[] parms = new Object[]{ inputStream, outputStream };
  +            Method method = object.getClass().getMethod("bind", new Class[] { parms.getClass()
});
  +            return method.invoke(object, new Object[] { parms });
  +        }
  +        catch (Exception e)
  +        {
  +            return null;
           }
       }
  +
  +
   }
  
  
  
  1.4       +33 -15    jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamHostContext.java
  
  Index: SocketObjectStreamHostContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamHostContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SocketObjectStreamHostContext.java	13 Oct 2002 11:54:26 -0000	1.3
  +++ SocketObjectStreamHostContext.java	13 Oct 2002 13:40:00 -0000	1.4
  @@ -8,16 +8,14 @@
   package org.apache.excalibur.altrmi.client.impl.socket;
   
   import org.apache.excalibur.altrmi.client.impl.AbstractHostContext;
  +import org.apache.excalibur.altrmi.client.impl.AbstractSameVmBindableHostContext;
   import org.apache.excalibur.altrmi.client.impl.piped.PipedObjectStreamHostContext;
   import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
  -import org.apache.excalibur.altrmi.registry.Registry;
  -import org.apache.excalibur.altrmi.registry.Binder;
  -import org.apache.excalibur.altrmi.registry.Bound;
  -import org.apache.excalibur.altrmi.registry.BindException;
   
   import java.io.PipedInputStream;
   import java.io.IOException;
   import java.io.PipedOutputStream;
  +import java.lang.reflect.Method;
   
   /**
    * Class SocketObjectStreamHostContext
  @@ -26,7 +24,7 @@
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
    * @version $Revision$
    */
  -public class SocketObjectStreamHostContext extends AbstractHostContext
  +public class SocketObjectStreamHostContext extends AbstractSameVmBindableHostContext
   {
   
       private String mObjectOutputStreamClassName;
  @@ -127,22 +125,42 @@
           PipedOutputStream out = new PipedOutputStream();
           try
           {
  -            Registry registry = Registry.getInstance();
  -            Binder binder = registry.get("/.altrmi/optimizations/port=" + m_port);
  -            Bound bound = binder.bind(new Object[] {in, out});
  -            PipedObjectStreamHostContext pipedObjectStreamHostContext
  +            Object binder = getOptmization("port=" + m_port);
  +            if (binder == null)
  +            {
  +                return null;
  +            }
  +            Object bound = bind(binder, in, out);
  +            if (bound == null)
  +            {
  +                return null;
  +            }
  +            PipedObjectStreamHostContext pipedCustomStreamHostContext
                       = new PipedObjectStreamHostContext(in, out);
  -            pipedObjectStreamHostContext.initialize();
  -            return pipedObjectStreamHostContext;
  +            pipedCustomStreamHostContext.initialize();
  +            return pipedCustomStreamHostContext;
           }
  -        catch (BindException e)
  +        catch (Exception e)
           {
               throw new IOException("Naming exception during bind :" + e.getMessage());
           }
  -        catch (AltrmiConnectionException e)
  +    }
  +
  +    private Object bind(Object object, PipedInputStream inputStream,
  +                       PipedOutputStream outputStream)
  +    {
  +
  +        try
  +        {
  +            Object[] parms = new Object[]{ inputStream, outputStream };
  +            Method method = object.getClass().getMethod("bind", new Class[] { parms.getClass()
});
  +            return method.invoke(object, new Object[] { parms });
  +        }
  +        catch (Exception e)
           {
  -            throw new IOException("Connection exception during bind :" + e.getMessage());
  +            return null;
           }
       }
  +
   
   }
  
  
  
  1.2       +7 -25     jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/registry/Registry.java
  
  Index: Registry.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/registry/Registry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Registry.java	13 Oct 2002 12:03:39 -0000	1.1
  +++ Registry.java	13 Oct 2002 13:40:00 -0000	1.2
  @@ -16,29 +16,7 @@
   public class Registry
   {
   
  -    private static Registry INSTANCE;
  -
  -    private HashMap m_map = new HashMap();
  -
  -    /**
  -     * Get the singleton instance
  -     * @return the instance
  -     */
  -    public static synchronized Registry getInstance()
  -    {
  -        if (INSTANCE == null)
  -        {
  -            INSTANCE = new Registry();
  -        }
  -        return INSTANCE;
  -    }
  -
  -    /**
  -     * Prevent public construction
  -     */
  -    private Registry()
  -    {
  -    }
  +    private static HashMap m_map = new HashMap();
   
       /**
        * Get a Bound object.
  @@ -47,7 +25,9 @@
        */
       public Binder get(String key)
       {
  -        return (Binder) m_map.get(key);
  +        synchronized (m_map) {
  +            return (Binder) m_map.get(key);
  +        }
       }
   
       /**
  @@ -57,7 +37,9 @@
        */
       public void put (String key, Object object)
       {
  -        m_map.put(key, object);
  +        synchronized (m_map) {
  +            m_map.put(key, object);
  +        }
       }
   
   }
  
  
  
  1.5       +3 -3      jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/CompleteSocketCustomStreamServer.java
  
  Index: CompleteSocketCustomStreamServer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/CompleteSocketCustomStreamServer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CompleteSocketCustomStreamServer.java	13 Oct 2002 11:54:27 -0000	1.4
  +++ CompleteSocketCustomStreamServer.java	13 Oct 2002 13:40:00 -0000	1.5
  @@ -36,7 +36,7 @@
       public CompleteSocketCustomStreamServer( int port ) throws AltrmiServerException
       {
           super( port );
  -        Registry.getInstance().put("/.altrmi/optimizations/port=" + port,
  +        new Registry().put("/.altrmi/optimizations/port=" + port,
                   new CompleteSocketCustomStreamPipedBinder(super.getInovcationHandlerAdapter()));
       }
   
  @@ -54,7 +54,7 @@
           throws AltrmiServerException
       {
           super( invocationHandlerAdapter, port );
  -        Registry.getInstance().put("/.altrmi/optimizations/port=" + port,
  +        new Registry().put("/.altrmi/optimizations/port=" + port,
                   new CompleteSocketCustomStreamPipedBinder(invocationHandlerAdapter));
       }
   
  
  
  
  1.6       +2 -2      jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/PartialSocketCustomStreamServer.java
  
  Index: PartialSocketCustomStreamServer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/PartialSocketCustomStreamServer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PartialSocketCustomStreamServer.java	13 Oct 2002 11:54:27 -0000	1.5
  +++ PartialSocketCustomStreamServer.java	13 Oct 2002 13:40:00 -0000	1.6
  @@ -36,7 +36,7 @@
   
           m_completeSocketCustomStreamPipedBinder =
                   new CompleteSocketCustomStreamPipedBinder(super.getInovcationHandlerAdapter());
  -        Registry.getInstance().put("/.altrmi/optimizations/port="
  +        new Registry().put("/.altrmi/optimizations/port="
                   + port, m_completeSocketCustomStreamPipedBinder);
       }
   
  
  
  
  1.6       +2 -2      jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/PartialSocketObjectStreamServer.java
  
  Index: PartialSocketObjectStreamServer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/PartialSocketObjectStreamServer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PartialSocketObjectStreamServer.java	13 Oct 2002 11:54:27 -0000	1.5
  +++ PartialSocketObjectStreamServer.java	13 Oct 2002 13:40:00 -0000	1.6
  @@ -37,7 +37,7 @@
       {
           m_completeSocketObjectStreamPipedBinder =
                   new CompleteSocketObjectStreamPipedBinder(super.getInovcationHandlerAdapter());
  -        Registry.getInstance().put("/.altrmi/optimizations/port="
  +        new Registry().put("/.altrmi/optimizations/port="
                   + port, m_completeSocketObjectStreamPipedBinder);
       }
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:avalon-cvs-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@jakarta.apache.org>


Mime
View raw message