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>