You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2002/04/03 17:27:50 UTC
cvs commit: jakarta-avalon-excalibur/altrmi/src/xdocs otherfeatures.xml transports.xml altrmi.uris book.xml
hammant 02/04/03 07:27:50
Modified: altrmi/src/xdocs altrmi.uris book.xml
Added: altrmi/src/xdocs otherfeatures.xml transports.xml
Log:
more blurb for altrmi
Revision Changes Path
1.2 +2 -0 jakarta-avalon-excalibur/altrmi/src/xdocs/altrmi.uris
Index: altrmi.uris
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/xdocs/altrmi.uris,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- altrmi.uris 3 Apr 2002 13:59:22 -0000 1.1
+++ altrmi.uris 3 Apr 2002 15:27:50 -0000 1.2
@@ -1,4 +1,6 @@
index.html
+otherfeatures.html
+transports.html
images/add.jpg
images/fix.jpg
images/remove.jpg
1.2 +2 -0 jakarta-avalon-excalibur/altrmi/src/xdocs/book.xml
Index: book.xml
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/xdocs/book.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- book.xml 3 Apr 2002 13:59:22 -0000 1.1
+++ book.xml 3 Apr 2002 15:27:50 -0000 1.2
@@ -12,6 +12,8 @@
<menu-item type="external" id="ExcaliburHome" label="Excalibur Home" href="http://jakarta.apache.org/avalon/excalibur/index.html"/>
<menu-item type="external" id="downloads" label="Download" href="http://jakarta.apache.org/builds/jakarta-avalon/apps"/>
<menu-item type="external" id="api-docs" label="API Docs" href="api/index.html"/>
+ <menu-item label="Other Features" href="otherfeatures.html"/>
+ <menu-item label="Transports" href="transports.html"/>
</menu>
</book>
1.1 jakarta-avalon-excalibur/altrmi/src/xdocs/otherfeatures.xml
Index: otherfeatures.xml
===================================================================
<?xml version="1.0"?>
<!DOCTYPE document SYSTEM "dtd/document-v10.dtd">
<document>
<header>
<title>Excalibur AltRMI / Overview</title>
<authors>
<person name="Paul Hammant" email="Paul_Hammant@yahoo.com"/>
</authors>
</header>
<body>
<s1 title="Introduction">
<p>
Blah
</p>
</s1>
<s1 title="Features">
<p>
Blah
</p>
<s2 title="Choice of location of generated Proxy class.">
<p>
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
can be generated in advance (Ant Task) or at runtime - javac is invoked.
</p>
</s2>
<s2 title="Choice of castability of generated proxy class.">
<p>
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).
</p>
</s2>
<s2 title="Suspendable/Resumable service.">
<p>
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
tries the request again. A server could cycle through suspended and back
to resumed will not affect the client except for the a delay.
</p>
</s2>
<s2 title="Recovering transport">
<p>
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.
</p>
</s2>
<s2 title="Event API">
<p>
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.
</p>
</s2>
<s2 title="Pluggable Transport indenpendant keep-alive concept.">
<p>
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.
</p>
</s2>
<s2 title="Unpublishable and republishable API">
<p>
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.
</p>
</s2>
<s2 title="Startable API for Server">
<p>
The server implements and acts upon start() and stop() methods.
</p>
</s2>
<s2 title="Not just pass by value.">
<p>
AltRMI started life as 'pass by value' only. In now supports return
types and parameters wrapped in another AltRMI Facade.
</p>
</s2>
<s2 title="No duplicate instances.">
<p>
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.
</p>
</s2>
<s2 title="Load balancing server grouping">
<p>
In some configurations, the client side can have multiple servers it
will forward calls to (TODO).
</p>
</s2>
<s2 title="">
<p>
Blah
</p>
</s2>
</s1>
</body>
<footer>
<legal>
Copyright (c) @year@ The Jakarta Apache Project All rights reserved.
$Revision: 1.1 $ $Date: 2002/04/03 15:27:50 $
</legal>
</footer>
</document>
1.1 jakarta-avalon-excalibur/altrmi/src/xdocs/transports.xml
Index: transports.xml
===================================================================
<?xml version="1.0"?>
<!DOCTYPE document SYSTEM "dtd/document-v10.dtd">
<document>
<header>
<title>Excalibur AltRMI / Overview</title>
<authors>
<person name="Paul Hammant" email="Paul_Hammant@yahoo.com"/>
</authors>
</header>
<body>
<s1 title="Introduction">
<p>
AltRMI has pluggable and reimplementable transports. They differ in terms of speed and layers of transport. Some are in VM, others between VMs using sockets and various Java concepts.
</p>
</s1>
<s1 title="Transports">
<p>
Blah
</p>
<s2 title="Plain Sockets / ObjectStream & CustomStream varients">
<p>
Blah
</p>
</s2>
<s2 title="Over RMI">
<p>
Blah
</p>
</s2>
<s2 title="Piped with same VM / ObjectStream & CustomStream varients">
<p>
Blah
</p>
</s2>
<s2 title="Direct within same VM">
<p>
Blah
</p>
</s2>
</s1>
<s1 title="Future Transports">
<p>
<ul>
<li>SOAP - Might require additional undynamic "toWSDL()" step.</li>
<li>CORBA - Might require additional undynamic "toIDL()" step.</li>
<li>JMS</li>
<li>UDP</li>
<li>Over RMI over IIOP</li>
<li>Over JMS</li>
<li>Over RMI over HTTP</li>
<li>Over HTTP (custom impl)</li>
<li>TLS enabled versions of many of the above.</li>
</ul>
</p>
</s1>
<s1 title="JNDI">
<p>
Blah
</p>
</s1>
<s1 title="Speed">
<p>
Counting the number of 'void testSpeed()' invocations in 10 seconds,
we can guage the differences (my Athlon900 machine)
</p>
<s2 title="AltRMI types over TCP/IP">
<p>
For remote publication<br/>
<br/>
Speed Test type Count Relative<br/>
------------------------------- ------- --------<br/>
a) ObjectStream over sockets #2 2702 1.00<br/>
b) Over RMI 4359 1.61<br/>
c) CustomStream over sockets 6069 2.25<br/>
d) ObjectStream over sockets #1 10088 3.73<br/>
</p>
</s2>
<s2 title="AltRMI types in the same VM">
<p>
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..<br/>
<br/>
Speed Test type Count Relative<br/>
------------------------------- ------- --------<br/>
e) ObjectStream over Pipe #2 12095 4.48<br/>
f) Direct Marshalled #3 20759 7.68<br/>
g) ObjectStream over Pipe #1 61166 22.64<br/>
h) Direct Unmarshalled # 2391498 885.08<br/>
#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.
</p>
</s2>
<s2 title="Non AltRMI types">
<p>
- 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.
<br/>
Speed Test type Count Relative<br/>
------------------------------- ------- --------<br/>
i) DyanmicProxy #5<br/>
(copied from Excalibur) 20282070 7506.32<br/>
j) Hand-coded proxy #5 41214422 15253.30<br/>
k) No Proxy #5 42384804 15686.46<br/>
<br/>
#4 - For all of these three, the actual timing may slow down the test.<br/>
</p>
</s2>
</s1>
</body>
<footer>
<legal>
Copyright (c) @year@ The Jakarta Apache Project All rights reserved.
$Revision: 1.1 $ $Date: 2002/04/03 15:27:50 $
</legal>
</footer>
</document>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>