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="[EMAIL PROTECTED]"/>
</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="[EMAIL PROTECTED]"/>
</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: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>