You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ha...@apache.org on 2002/04/04 05:54:41 UTC

cvs commit: jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test BeepClientTest.java BeepServerTest.java CodedProxyTest.java DirectMarshalledTest.java DirectTest.java DynamicProxy.java DynamicProxyTest.java MemoryLeak.java MemoryLeakClientTest.java MemoryLeakImpl.java MemoryLeakServerTest.java PipeTest.java ProConClientTest.java ProConServerTest.java RmiClientTest.java RmiServerTest.java SocketClientTest.java SocketClientTestJNDI.java SocketServerTest.java TestClient.java TestConsumer.java TestConsumerImpl.java TestInterface.java TestInterface2.java TestInterface2Impl.java TestInterfaceImpl.java TestObject.java TestProvider.java TestProviderImpl.java UnProxyTest.java

hammant     02/04/03 19:54:41

  Modified:    altrmi   PROPOSAL
  Removed:     altrmi   LICENSE README.txt build.xml memleak.xml tests.xml
                        tests2.xml
               altrmi/src/conf MANIFEST-client-impl.MF
                        MANIFEST-client-interfaces.MF MANIFEST-common.MF
                        MANIFEST-generator.MF MANIFEST-server-impl.MF
                        MANIFEST-server-interfaces.MF
               altrmi/src/java/org/apache/commons/altrmi/client
                        AltrmiClientInvocationHandler.java
                        AltrmiConnectionListener.java
                        AltrmiConnectionPinger.java AltrmiFactory.java
                        AltrmiHostContext.java AltrmiInterfaceLookup.java
                        AltrmiInterfaceLookupFactory.java AltrmiProxy.java
               altrmi/src/java/org/apache/commons/altrmi/client/impl
                        AbstractAltrmiFactory.java
                        AbstractClientInvocationHandler.java
                        AbstractConnectionPinger.java
                        AbstractFactoryHelper.java AbstractHostContext.java
                        AbstractInterfaceLookupFactory.java
                        BaseServedObject.java ClientClassAltrmiFactory.java
                        DefaultConnectionListener.java
                        DefaultConnectionPinger.java
                        DefaultInterfaceLookupFactory.java
                        PerpetualConnectionPinger.java
                        ServerClassAltrmiFactory.java
                        TransportedClassLoader.java
               altrmi/src/java/org/apache/commons/altrmi/client/impl/beep
                        BEEPHostContext.java BEEPInvocationHandler.java
               altrmi/src/java/org/apache/commons/altrmi/client/impl/direct
                        AbstractDirectInvocationHandler.java
                        DirectHostContext.java DirectInvocationHandler.java
                        DirectMarshalledHostContext.java
                        DirectMarshalledInvocationHandler.java
               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/client/impl/naming
                        DefaultAltrmiContext.java
                        DefaultAltrmiInitialContextFactory.java
               altrmi/src/java/org/apache/commons/altrmi/client/impl/piped
                        AbstractPipedStreamInvocationHandler.java
                        PipedCustomStreamInvocationHandler.java
                        PipedObjectStreamHostContext.java
                        PipedObjectStreamInvocationHandler.java
               altrmi/src/java/org/apache/commons/altrmi/client/impl/rmi
                        RmiFactoryHelper.java RmiHostContext.java
                        RmiInvocationHandler.java
               altrmi/src/java/org/apache/commons/altrmi/client/impl/socket
                        AbstractSocketStreamInvocationHandler.java
                        SocketCustomStreamFactoryHelper.java
                        SocketCustomStreamHostContext.java
                        SocketCustomStreamInvocationHandler.java
                        SocketObjectStreamFactoryHelper.java
                        SocketObjectStreamHostContext.java
                        SocketObjectStreamInvocationHandler.java
               altrmi/src/java/org/apache/commons/altrmi/client/impl/stream
                        ClientCustomStreamReadWriter.java
                        ClientObjectStreamReadWriter.java
                        ClientStreamReadWriter.java
                        StreamInvocationHandler.java
               altrmi/src/java/org/apache/commons/altrmi/common
                        AbstractMethodHandler.java
                        AltrmiAuthentication.java
                        AltrmiAuthenticationException.java
                        AltrmiConnectionClosedException.java
                        AltrmiConnectionException.java
                        AltrmiInvocationException.java
                        AltrmiInvocationHandler.java
                        AltrmiMarshalledInvocationHandler.java
                        AltrmiReply.java AltrmiRequest.java
                        ClassLoaderObjectInputStream.java ClassReply.java
                        ClassRequest.java ClassRetrievalFailedReply.java
                        EndConnectionReply.java ExceptionReply.java
                        FacadeRefHolder.java GarbageCollectionReply.java
                        GarbageCollectionRequest.java
                        KeyAuthentication.java ListReply.java
                        ListRequest.java LookupReply.java
                        LookupRequest.java MethodFacadeArrayReply.java
                        MethodFacadeReply.java MethodFacadeRequest.java
                        MethodReply.java MethodRequest.java
                        NoSuchReferenceException.java
                        NoSuchReferenceReply.java
                        NotPublishedException.java NotPublishedReply.java
                        OpenConnectionReply.java OpenConnectionRequest.java
                        PingReply.java PingRequest.java
                        ProxyGenerationException.java ProxyGenerator.java
                        PublishedNameRequest.java RequestFailedReply.java
                        RmiAltrmiInvocationHandler.java
                        SerializationHelper.java Sessionable.java
                        SuspendedReply.java TryLaterReply.java
                        UserPasswordAuthentication.java
               altrmi/src/java/org/apache/commons/altrmi/generator
                        ProxyGeneratorImpl.java
               altrmi/src/java/org/apache/commons/altrmi/generator/ant
                        AltrmiProxyTask.java
               altrmi/src/java/org/apache/commons/altrmi/javacompiler
                        JavaCompiler.java SunJavaCompiler.java
               altrmi/src/java/org/apache/commons/altrmi/server
                        AltrmiAuthenticator.java AltrmiProxyGenerator.java
                        AltrmiPublisher.java AltrmiServer.java
                        AltrmiServerConnection.java
                        AltrmiServerException.java
                        ClassRetrievalException.java ClassRetriever.java
                        MethodInvocationHandler.java
                        ProxyGenerationEnvironmentException.java
                        PublicationDescription.java
                        PublicationException.java
               altrmi/src/java/org/apache/commons/altrmi/server/impl
                        AbstractServer.java AltrmiSession.java
                        DefaultAuthenticator.java
                        DefaultMethodInvocationHandler.java
                        ServerCustomStreamReadWriter.java
                        ServerObjectStreamReadWriter.java
                        ServerStreamReadWriter.java
                        StreamServerConnection.java
               altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters
                        InvocationHandlerAdapter.java
                        MarshalledInvocationHandlerAdapter.java
                        PublicationAdapter.java
               altrmi/src/java/org/apache/commons/altrmi/server/impl/beep
                        AltrmiBEEPServerProfile.java
                        BEEPServerConnection.java CompleteBEEPServer.java
                        ServerBEEPReadWriter.java
               altrmi/src/java/org/apache/commons/altrmi/server/impl/classretrievers
                        AbstractClassRetriever.java
                        DynamicGeneratorClassRetriever.java
                        JarFileClassRetriever.java NoClassRetriever.java
                        PlainClassRetriever.java
               altrmi/src/java/org/apache/commons/altrmi/server/impl/direct
                        DirectMarshalledServer.java DirectServer.java
               altrmi/src/java/org/apache/commons/altrmi/server/impl/piped
                        AbstractPipedServer.java
                        PipedObjectStreamServer.java
                        PipedStreamServerConnection.java
               altrmi/src/java/org/apache/commons/altrmi/server/impl/rmi
                        RmiInovcationAdapter.java RmiServer.java
               altrmi/src/java/org/apache/commons/altrmi/server/impl/socket
                        AbstractCompleteSocketStreamServer.java
                        CompleteSocketCustomStreamServer.java
                        CompleteSocketObjectStreamServer.java
                        PartialSocketCustomStreamServer.java
                        PartialSocketObjectStreamServer.java
                        SocketStreamServerConnection.java
               altrmi/src/java/org/apache/commons/altrmi/test
                        BeepClientTest.java BeepServerTest.java
                        CodedProxyTest.java DirectMarshalledTest.java
                        DirectTest.java DynamicProxy.java
                        DynamicProxyTest.java MemoryLeak.java
                        MemoryLeakClientTest.java MemoryLeakImpl.java
                        MemoryLeakServerTest.java PipeTest.java
                        ProConClientTest.java ProConServerTest.java
                        RmiClientTest.java RmiServerTest.java
                        SocketClientTest.java SocketClientTestJNDI.java
                        SocketServerTest.java TestClient.java
                        TestConsumer.java TestConsumerImpl.java
                        TestInterface.java TestInterface2.java
                        TestInterface2Impl.java TestInterfaceImpl.java
                        TestObject.java TestProvider.java
                        TestProviderImpl.java UnProxyTest.java
  Log:
  Remove files not needed after major package refactor
  
  Revision  Changes    Path
  1.17      +5 -191    jakarta-commons-sandbox/altrmi/PROPOSAL
  
  Index: PROPOSAL
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/PROPOSAL,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- PROPOSAL	26 Mar 2002 11:24:05 -0000	1.16
  +++ PROPOSAL	4 Apr 2002 03:54:39 -0000	1.17
  @@ -1,194 +1,8 @@
  ---------------------------------------------------------------------------
  - JAKARTA COMMONS  -  ALTERNATIVE (TO) REMOTE METHOD INVOCATION - "AltRMI"
  ---------------------------------------------------------------------------
   
  -Abstract:
  +AltRMI has moved to Avalon-Excalibur
   
  -The AltRMI package provides an alternative to Java's RMI.  Apart from simply 
  -being an alternative it provides the following features:
  +See 
   
  -1) Any interface publishing
  -
  -  - Any object via the interfaces it publishes, can be published remotely.
  -  - No transport lock-in :
  -    - No forcing of extension of java.rmi.Remote
  -    - No forced declarations of "throws java.rmi.RemoteException"
  -  
  -    * These two features are part of the reason why Graham Glass's 'Glue'
  -      product is so successful. His API goes several stages futher in that
  -      it pubishes APIs via SOAP so that any language in any location can
  -      use Glue published Java services.
  -  
  -2) Multiple transports
  -
  -  - Plain Sockets / ObjectStream
  -  - via RMI
  -  - Piped with same VM / ObjectStream
  -  - Direct within same VM
  -  - Plain sockets / custom message streaming  
  -  - JNDI Done.  
  -  - SOAP (planned)
  -      - Might require additional undynamic "toWSDL()" step.
  -  - CORBA (planned)
  -      - Might require additional undynamic "toIDL()" step.
  -  - JMS (planned)  
  -  - UDP (planned)
  -  
  -3) Speed  
  -
  -  - Counting the number of 'void testSpeed()' invocations in 10 seconds,
  -    we can guage the differences (my Athlon900 machine)
  -    
  -    Speed Test type                   Count Relative
  -    ------------------------------- ------- -------- 
  -    
  -    AltRMI types over TCP/IP
  -    ------------------------
  -    - For remote publication
  -    
  -    a) ObjectStream over sockets #2    2702     1.00
  -    b) Over RMI                        4359	1.61
  -    c) CustomStream over sockets       6069     2.25
  -    d) ObjectStream over sockets #1   10088     3.73
  -    
  -    AltRMI types in the same VM
  -    ---------------------------    
  -    - These are useful for complete classloader separation
  -      of interface & impl using different classloaders. Impl
  -      and 'remote' proxy do not need to see the same 
  -      interfaces etc..
  -    
  -    e) ObjectStream over Pipe #2      12095     4.48
  -    f) Direct Marshalled #3           20759     7.68
  -    g) ObjectStream over Pipe #1      61166    22.64
  -    h) Direct Unmarshalled #        2391498   885.08
  -    
  -    #1 Without calling reset() as workaround to the ObjectStream bug
  -    #2 With calling reset() as workaround to the ObjectStream bug
  -    #3 Completely separates classloaders of client and server. Requires 
  -       a thread for each though.
  -    #4 Good as DynamicProxy for separation. Does not separate classloaders
  -       of client and server.
  -    
  -    Non AltRMI types
  -    ----------------
  -    - In VM, without using AltRMI - for comparison.
  -    - The inteface, impl and proxy cannot be separated in terms of
  -      branches of classloader for these three. The same interfaces 
  -      etc must be visible to both impl and proxy.
  -    
  -    i) DyanmicProxy #5
  -       (copied from Excalibur)     20282070  7506.32
  -    j) Hand-coded proxy #5         41214422 15253.30
  -    k) No Proxy #5                 42384804 15686.46
  -    
  -    #4 - For all of these three, the actual timing may slow down the test.
  -    
  -4) Interface/Impl separated design.
  -
  -  - AltRMI can be build easily into any application or application framework.  
  -    Individual aspects can be reimplemented (or overridden) as the need 
  -    arises.
  -
  -5) Choice of location of generated Proxy class.
  -
  -  - Classes providing client side implementation of the transported 
  -    interface(s) can be either on the client side or the server side (and 
  -    duly transported) at time of lookup.  On the server side, the proxy classes
  -    cal be generated in advance (Ant Task) or at runtime - javac is invoked.
  -    
  -6) Choice of castability of generated proxy class.
  -
  -  - To suit remote facilities that are happy with refection and do 
  -    not need to cast to an interface to use a bean (I am thinking of 
  -    BeanShell) the proxy class can be generated without specifying
  -    that it implements the interface(s).
  -
  -7) Suspendable/Resumable service.
  -
  -  - The Server supports suspend() and resume().  With the current impl this 
  -    replies in a timely fashion to the client that the client should try
  -    later.  The client waits for the notified amount of time and seamlessly
  -    trys the requets again.  A server could cycle through suspended and back
  -    to resumed will not affect the client except for the a delay.
  -
  -8) Recovering transport
  -
  -  - AltRMI tries to recover its transports should they fail.  The recovery 
  -    is pluggable in that the developer can choose when/how/if the connection
  -    handler tries to recover the connection.  Any inprogress, but
  -    disconnected method invocation will attempt to be recoved and just return
  -    as normal, albeit after a longer than normal delay.
  -  
  -9) Event API
  -
  -  - For suspensions, abnormal ends of connection etc, there is a listener 
  -    that can be set that will allow actions to be taken.  Abnormally 
  -    terminated connections will by default try to be reconnected, the 
  -    listener can decide if, how many, and how often the retries occur.
  -
  -10) Pluggable Transport indenpendant keep-alive concept.
  -
  -  - On the client side, there is an API for a pluggable pinger.  While the server
  -    may support timeouts for client connections, the client could choose to
  -    overcome that default policy with a ping concept.
  -  
  -11) Unpublishable and republishable API
  -  
  -  - The server is able to unpublish a service.  In conjuction with 
  -    suspend()/resume() a service can be republished, upgraded etc
  -    whilst in use, or just offlined.
  -
  -12) Startable API for Server
  -
  -  - The server implements and acts upon start() and stop() methods.
  -
  -13) Not just pass by value.
  -
  -  - AltRMI started life as 'pass by value' only.  In now supports return 
  -    types and parameters wrapped in another AltRMI Facade.
  -    
  -14) No duplicate instances.
  -
  -  - 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) Use in EJB 
  -
  -  - This is not of any use for EJB Home/Remote interfaces.  The container 
  -    maker chooses the transport for use that container, not the bean coder.
  -    This is intended for other client server solutions.  Beside RMI over IIOP
  -    is Sun specified.
  -
  -Todo:
  -
  -1) Other transports
  -  
  -  - SOAP, CORBA (with WDSL & IDL generation steps)
  -  - Other RMI (over IIOP, over HTTP)
  -  - JMS
  -
  -2) BCEL (or other) for generated proxy class
  -
  -  - The current impl writes java source then compiles it.  We could do this
  -    inline with BCEL.  This as an heavier, but more design perfect 
  -    alternative to the current server side impl.
  -    
  -  - BCEL is really difficult to use if you are not skilled in it!!
  -
  -     
  -3) Client and Server code for secure conversations.
  -
  -
  -Initial developers:
  -
  -Paul Hammant (hammant@apache.org)
  -Vinaysahil Chandran (not a committer yet)
  +http://cvs.apache.org/viewcvs/jakarta-avalon-excalibur/altrmi/ (root)
  +http://cvs.apache.org/viewcvs/jakarta-avalon-excalibur/altrmi/src/xdocs/ (docs)
  +http://jakarta.apache.org/avalon/excalibur/altrmi (waiting for opportunity to fire docs at website)
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>