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/05/01 20:44:17 UTC

cvs commit: jakarta-avalon-site/docs/excalibur/altrmi tests.html client-usage.html connection-listeners.html facades.html generating-proxies.html index.html otherfeatures.html pingers.html publishing.html transports.html

hammant     02/05/01 11:44:17

  Modified:    docs/excalibur/altrmi client-usage.html
                        connection-listeners.html facades.html
                        generating-proxies.html index.html
                        otherfeatures.html pingers.html publishing.html
                        transports.html
  Added:       docs/excalibur/altrmi tests.html
  Log:
  more words for altrmi
  
  Revision  Changes    Path
  1.2       +4 -1      jakarta-avalon-site/docs/excalibur/altrmi/client-usage.html
  
  Index: client-usage.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/client-usage.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- client-usage.html	5 Apr 2002 15:11:45 -0000	1.1
  +++ client-usage.html	1 May 2002 18:44:17 -0000	1.2
  @@ -41,7 +41,7 @@
   <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
   </li>
   <li>
  -<a href="api/index.html.xml"><font size="-1">API Docs</font></a>
  +<a href="api/index.html"><font size="-1">API Docs</font></a>
   </li>
   <li>
   <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  @@ -74,6 +74,9 @@
   </li>
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
  +</li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
   </li>
   </ul>
   </font>
  
  
  
  1.2       +4 -1      jakarta-avalon-site/docs/excalibur/altrmi/connection-listeners.html
  
  Index: connection-listeners.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/connection-listeners.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- connection-listeners.html	5 Apr 2002 15:11:45 -0000	1.1
  +++ connection-listeners.html	1 May 2002 18:44:17 -0000	1.2
  @@ -41,7 +41,7 @@
   <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
   </li>
   <li>
  -<a href="api/index.html.xml"><font size="-1">API Docs</font></a>
  +<a href="api/index.html"><font size="-1">API Docs</font></a>
   </li>
   <li>
   <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  @@ -74,6 +74,9 @@
   </li>
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
  +</li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
   </li>
   </ul>
   </font>
  
  
  
  1.2       +4 -1      jakarta-avalon-site/docs/excalibur/altrmi/facades.html
  
  Index: facades.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/facades.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- facades.html	5 Apr 2002 15:11:45 -0000	1.1
  +++ facades.html	1 May 2002 18:44:17 -0000	1.2
  @@ -41,7 +41,7 @@
   <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
   </li>
   <li>
  -<a href="api/index.html.xml"><font size="-1">API Docs</font></a>
  +<a href="api/index.html"><font size="-1">API Docs</font></a>
   </li>
   <li>
   <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  @@ -74,6 +74,9 @@
   </li>
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
  +</li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
   </li>
   </ul>
   </font>
  
  
  
  1.2       +4 -1      jakarta-avalon-site/docs/excalibur/altrmi/generating-proxies.html
  
  Index: generating-proxies.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/generating-proxies.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- generating-proxies.html	5 Apr 2002 15:11:45 -0000	1.1
  +++ generating-proxies.html	1 May 2002 18:44:17 -0000	1.2
  @@ -41,7 +41,7 @@
   <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
   </li>
   <li>
  -<a href="api/index.html.xml"><font size="-1">API Docs</font></a>
  +<a href="api/index.html"><font size="-1">API Docs</font></a>
   </li>
   <li>
   <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  @@ -74,6 +74,9 @@
   </li>
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
  +</li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
   </li>
   </ul>
   </font>
  
  
  
  1.3       +3 -0      jakarta-avalon-site/docs/excalibur/altrmi/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/index.html,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- index.html	7 Apr 2002 10:22:38 -0000	1.2
  +++ index.html	1 May 2002 18:44:17 -0000	1.3
  @@ -75,6 +75,9 @@
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
   </li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
  +</li>
   </ul>
   </font>
   <br>
  
  
  
  1.2       +4 -1      jakarta-avalon-site/docs/excalibur/altrmi/otherfeatures.html
  
  Index: otherfeatures.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/otherfeatures.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- otherfeatures.html	5 Apr 2002 15:11:45 -0000	1.1
  +++ otherfeatures.html	1 May 2002 18:44:17 -0000	1.2
  @@ -41,7 +41,7 @@
   <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
   </li>
   <li>
  -<a href="api/index.html.xml"><font size="-1">API Docs</font></a>
  +<a href="api/index.html"><font size="-1">API Docs</font></a>
   </li>
   <li>
   <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  @@ -74,6 +74,9 @@
   </li>
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
  +</li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
   </li>
   </ul>
   </font>
  
  
  
  1.2       +27 -4     jakarta-avalon-site/docs/excalibur/altrmi/pingers.html
  
  Index: pingers.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/pingers.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- pingers.html	5 Apr 2002 15:11:45 -0000	1.1
  +++ pingers.html	1 May 2002 18:44:17 -0000	1.2
  @@ -41,7 +41,7 @@
   <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
   </li>
   <li>
  -<a href="api/index.html.xml"><font size="-1">API Docs</font></a>
  +<a href="api/index.html"><font size="-1">API Docs</font></a>
   </li>
   <li>
   <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  @@ -75,6 +75,9 @@
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
   </li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
  +</li>
   </ul>
   </font>
   <br>
  @@ -110,8 +113,7 @@
   <p align="justify">
           Although it may not be necessary for all types of transport, 
           there is a mechanism called a pinger that can be used to keep alive 
  -        the connection. It is possible to write your own or extend the exiting 
  -        ones if there are different requirements.  Pingers run on the client side.
  +        the connection. Pingers run on the client side.
         </p>
       
   </font></td>
  @@ -122,11 +124,32 @@
   <div align="right">
   <table cellspacing="0" cellpadding="2" border="0" width="100%">
   <tr>
  -<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Pinger types</b></font></td>
  +<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Pinger Interface</b></font></td>
   </tr>
   <tr>
   <td><font face="arial,helvetica,sanserif" color="#000000">
   <br>
  +      
  +<p align="justify">
  +        It is possible to write your own or extend the exiting 
  +        ones if there are different requirements.  The interface for bespoke pingers 
  +        is <a href="api/org/apache/excalibur/altrmi/client/AltrmiConnectionPinger.html">here</a>
  +      
  +</p>    
  +    
  +</font></td>
  +</tr>
  +</table>
  +</div>
  +<br>
  +<div align="right">
  +<table cellspacing="0" cellpadding="2" border="0" width="100%">
  +<tr>
  +<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Pinger types</b></font></td>
  +</tr>
  +<tr>
  +<td><font face="arial,helvetica,sanserif" color="#000000">
  +<br>    
         
   <p align="justify">                
           Here are the types of pinger implemented so far
  
  
  
  1.2       +4 -1      jakarta-avalon-site/docs/excalibur/altrmi/publishing.html
  
  Index: publishing.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/publishing.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- publishing.html	5 Apr 2002 15:11:45 -0000	1.1
  +++ publishing.html	1 May 2002 18:44:17 -0000	1.2
  @@ -41,7 +41,7 @@
   <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
   </li>
   <li>
  -<a href="api/index.html.xml"><font size="-1">API Docs</font></a>
  +<a href="api/index.html"><font size="-1">API Docs</font></a>
   </li>
   <li>
   <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  @@ -74,6 +74,9 @@
   </li>
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
  +</li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
   </li>
   </ul>
   </font>
  
  
  
  1.2       +171 -49   jakarta-avalon-site/docs/excalibur/altrmi/transports.html
  
  Index: transports.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/excalibur/altrmi/transports.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- transports.html	5 Apr 2002 15:11:45 -0000	1.1
  +++ transports.html	1 May 2002 18:44:17 -0000	1.2
  @@ -41,7 +41,7 @@
   <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
   </li>
   <li>
  -<a href="api/index.html.xml"><font size="-1">API Docs</font></a>
  +<a href="api/index.html"><font size="-1">API Docs</font></a>
   </li>
   <li>
   <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  @@ -75,6 +75,9 @@
   <li>
   <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
   </li>
  +<li>
  +<a href="tests.html"><font size="-1">Tests</font></a>
  +</li>
   </ul>
   </font>
   <br>
  @@ -108,7 +111,8 @@
   <br>
         
   <p align="justify">
  -        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.
  +        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>
       
   </font></td>
  @@ -119,16 +123,27 @@
   <div align="right">
   <table cellspacing="0" cellpadding="2" border="0" width="100%">
   <tr>
  -<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Transports</b></font></td>
  +<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Supplied Request/Response Transports</b></font></td>
   </tr>
   <tr>
   <td><font face="arial,helvetica,sanserif" color="#000000">
   <br>
         
  -<p align="justify">                
  -        Blah     
  +<p align="justify">
  +        The supplied transports fall into two categories - Intra-JVM and Inter-JVM. The Inter-JVM types are for
  +        bridging a network divide over TCP/IP.  This can also mean two JVMs in the same physical machine, using
  +        local-loop TCP/IP. The Intra-JVM types are dor situations where normal dynamic proxy will not work.  For
  +        example when the client and the server both have a definition of the same interfact in different
  +        classloaders.  Most Java projects do not involve trees of classloaders, but writing frameworks like
  +        Avalon-Phoenix or or an implementation of the EJB specification will.
         </p>
         
  +<p align="justify">
  +        All of these transports are synchronous too.  That means that an invokation acorss there connection
  +        will wait until the it is completed server side before the next invocation is allowed through.
  +      </p>
  +
  +      
   <div align="right">
   <table cellspacing="0" cellpadding="2" border="0" width="99%">
   <tr>
  @@ -136,10 +151,17 @@
   </tr>
   <tr>
   <td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>            
  +<br>
           
   <p align="justify">
  -          Blah
  +          This transport is a streaming type that uses serialization of objects over a TCP/IP connection.  There
  +          are two variations. The first uses java.io.ObjectInputStream &amp; java.io.ObjectOutputStream (AKA
  +          'ObjectStream', the second uses what we call 'CustomStream'. CustomStream came into being because of this
  +          bug <a href="http://developer.java.sun.com/developer/bugParade/bugs/4499841.html">
  +          http://developer.java.sun.com/developer/bugParade/bugs/4499841.html</a>
  +          which seriously restricts the usefulness of ObjectStream as a transport
  +          (and the same java.io classes for other uses). Custom Stream is slower by 20%, but we recommend it's use
  +          over ObjectStream.  At least until the bug at Sun is fixed (please vote for it).
           </p>
         
   </font></td>
  @@ -155,11 +177,13 @@
   </tr>
   <tr>
   <td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>    
  +<br>
           
   <p align="justify">
  -          Blah
  -        </p>            
  +          This is another transport that bridges two different JVMs using TCP/IP.  It is actually the fstest of all the
  +          TCP/IP using transports. and takes advantage of RMI as it's transport while hiding RMI from the AltRMI
  +          client and server.
  +        </p>
         
   </font></td>
   </tr>
  @@ -174,11 +198,15 @@
   </tr>
   <tr>
   <td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>    
  +<br>
           
   <p align="justify">
  -          Blah
  -        </p>      
  +          In a similar way to the ObjectStream and CustomStream implementations of the plain sockets transport, these
  +          offer trasport using a pipe inside the JVM.  Not needed for most users of AltRMI these prove useful for
  +          developers making complex trees of classloaders with high separation from each other. As a Pipe is being
  +          used there is is some opportunity for buffering of invokations.  This might slow the throughput down but
  +          this may releieve other parts of a particular design.
  +        </p>
         
   </font></td>
   </tr>
  @@ -193,17 +221,82 @@
   </tr>
   <tr>
   <td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>    
  +<br>
           
   <p align="justify">
  -          Blah
  -        </p>      
  +          There are 'Direct' and 'DirectMarshalled' transports.  These are use useful in the same scenarios as
  +          the Piped one, but with some small differences.  Principally, there is no pipe - the invokation is
  +          immediately handled on the server side.  With Direct there is also the fact that all mutually visible
  +          classes and interfaces woould have to be in a commonly visible classloader.  With DirectMarshalled,
  +          there can be duplicate interfaces and class definitions as in the streamed types of transport.
  +        </p>
  +      
  +</font></td>
  +</tr>
  +</table>
  +</div>
  +<br>
  +      
  +<div align="right">
  +<table cellspacing="0" cellpadding="2" border="0" width="99%">
  +<tr>
  +<td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>JNDI</b></font></td>
  +</tr>
  +<tr>
  +<td><font face="arial,helvetica,sanserif" color="#000000">
  +<br>
  +        
  +<p align="justify">
  +          Many of the basic transport types are accessible client side through JNDI.  This makes the client side usage
  +          more standards compliant, but these is no need to choose it over the bespoke AltRMI client usage at all.
  +        </p>
  +      
  +</font></td>
  +</tr>
  +</table>
  +</div>
  +<br>
  +    
  +</font></td>
  +</tr>
  +</table>
  +</div>
  +<br>
  +<div align="right">
  +<table cellspacing="0" cellpadding="2" border="0" width="100%">
  +<tr>
  +<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Supplied Callback capable Transports</b></font></td>
  +</tr>
  +<tr>
  +<td><font face="arial,helvetica,sanserif" color="#000000">
  +<br>
  +      
  +<p align="justify">
  +        All of these transports are asynchronous.  Thais means that an invokation across there connection
  +        will does not wait until the reply is ready before it allows another request though.  This allows
  +        two thing - excpetionally lengthy requests (that might ordinarily affect timeouts) to be performed and
  +        callbacks (server invoking requests on the client).  There is a smal (15%) cost to using this transport for
  +        simple cases, but its benefits outweigh its deficiences.
  +      </p>
  +      
  +<p align="justify">
  +        Whilst the Callback enabled transports are better from the point of view of asynchronous behaviour
  +      </p>
  +      
  +<div align="right">
  +<table cellspacing="0" cellpadding="2" border="0" width="99%">
  +<tr>
  +<td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>xxx</b></font></td>
  +</tr>
  +<tr>
  +<td><font face="arial,helvetica,sanserif" color="#000000">
  +<br>
         
   </font></td>
   </tr>
   </table>
   </div>
  -<br>    
  +<br>
       
   </font></td>
   </tr>
  @@ -217,7 +310,7 @@
   </tr>
   <tr>
   <td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>    
  +<br>
         
   <p align="justify">
           
  @@ -243,25 +336,7 @@
           
   </ul>
         
  -</p>      
  -    
  -</font></td>
  -</tr>
  -</table>
  -</div>
  -<br>
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="100%">
  -<tr>
  -<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>JNDI</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>    
  -      
  -<p align="justify">
  -        Blah
  -      </p>      
  +</p>
       
   </font></td>
   </tr>
  @@ -275,12 +350,11 @@
   </tr>
   <tr>
   <td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>    
  +<br>
         
   <p align="justify">
           Counting the number of 'void testSpeed()' invocations in 10 seconds,
  -        we can guage the differences (my Athlon900 machine)
  -	    
  +        we can guage the differences (Paul's Athlon900/Win2K machine)
   
         </p>
   	    
  @@ -305,7 +379,7 @@
   	    d) ObjectStream over sockets #1   10088     3.73<p align="justify"></p>
   
               
  -</p>	    
  +</p>
               
   </font></td>
   </tr>
  @@ -324,8 +398,8 @@
   	    
   <p align="justify">
   
  -	    These are useful for complete classloader separation of interface &amp; impl using 
  -	    different classloaders. Impl and 'remote' proxy do not need to see the same 
  +	    These are useful for complete classloader separation of interface &amp; impl using
  +	    different classloaders. Impl and 'remote' proxy do not need to see the same
               interfaces etc..<p align="justify"></p>
               
   <p align="justify"></p>
  @@ -334,11 +408,11 @@
   	    e) ObjectStream over Pipe #2      12095     4.48<p align="justify"></p>
   	    f) Direct Marshalled #3           20759     7.68<p align="justify"></p>
   	    g) ObjectStream over Pipe #1      61166    22.64<p align="justify"></p>
  -	    h) Direct Unmarshalled #        2391498   885.08<p align="justify"></p>
  -	    
  +	    h) Direct Unmarshalled #4        2391498   885.08<p align="justify"></p>
  +
   	    #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 
  +	    #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.
  @@ -363,11 +437,11 @@
   
   	    - 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 
  +	      branches of classloader for these three. The same interfaces
   	      etc must be visible to both impl and proxy.
   	      <p align="justify"></p>
   	    Speed Test type                   Count Relative<p align="justify"></p>
  -	    ------------------------------- ------- --------<p align="justify"></p>	    
  +	    ------------------------------- ------- --------<p align="justify"></p>
   	    i) DyanmicProxy #5<p align="justify"></p>
   	       (copied from Excalibur)     20282070  7506.32<p align="justify"></p>
   	    j) Hand-coded proxy #5         41214422 15253.30<p align="justify"></p>
  @@ -376,13 +450,61 @@
   <p align="justify"></p>
   	    #4 - For all of these three, the actual timing may slow down the test.<p align="justify"></p>
              
  -</p>      
  +</p>
              
   </font></td>
   </tr>
   </table>
   </div>
   <br>
  +    
  +</font></td>
  +</tr>
  +</table>
  +</div>
  +<br>
  +<div align="right">
  +<table cellspacing="0" cellpadding="2" border="0" width="100%">
  +<tr>
  +<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Secrets of classloading</b></font></td>
  +</tr>
  +<tr>
  +<td><font face="arial,helvetica,sanserif" color="#000000">
  +<br>
  +      
  +<p align="justify">
  +        There is a feature of classloading that affects the way that the an AltRMI using client and server interoperte
  +        when it comes to resolving classes and interfaces for a given object.  As is widely known, the JVM resolves
  +        depended on classes for a being-instantiated object at runtime. The issue concerns a class definition existing
  +        twice in a tree of classloaders and whther the JVM considers an instance of each to be of the same type.
  +      </p>
  +      
  +<p align="justify">
  +        Consider a tree of three classloaders - A, B and C.  Consider that A is the parent classloader of B &amp; C.
  +        This means that B can access all the classes mounted by itself and by A.  Similarly C can access all the
  +        classes mounted by itself and A.  Now if A had a singleton that stored a single object via
  +        <em>void setObject(object o);</em> and <em>Object getObject();</em>, and clases in
  +        B amp; C could invoke those methods freely, the you might consider that B has a way of taking to C.  if B
  +        called (essentially) <em>A.setObject("Hello")</em>, then C could indeed call <em>String
  +        s = A.getObject()</em> without ny problem.  Say a class being passed were called 'Thing' and was in the
  +        classloader of B and duplicated in the classloader of C, but not in A at all, then it would not be passable
  +        by the setter/getter mechanism outlined above.  Why?  The JVM considers then differnt classes because they
  +        are mounted in different classloaders (even though from the same source).  That is a secret
  +        of classloading (at least as it pertains to RPC in one VM).
  +      </p>
  +      
  +<p align="justify">
  +        The issue is relevent to AltRMI mostly if it is being used to connect two nodes of a single classloader tree.
  +        If the trasport chosen is 'Direct' then you will get ClassCastExceptions thrown by the JVM if you had been
  +        passed an Object you wanted to cast up to something, and that something were represented by a class definition
  +        in both the server and client nodes of the classloader tree.  If the something class were in a mutualy
  +        visible parent class loader then no issue would be apparent.  IF the client and server were in seperate VMs,
  +        then no issue would be apparent, princiapally because on the marchalling to serialized form natly hides the
  +        two class definitions from the JVM.  This is the clue to the solving of the issue for a particular
  +        client/server (in one JVM) confiuration you may be cooking up.  If you choose Piped or DirectMarshalled as
  +        trasnports, then you can have the same class definition in multiple classloader nodes.  Of couse, both Piped
  +        and DirectMarshalled are slower than Direct as transports.  Configuration choices for the developer/deployer.
  +      </p>
       
   </font></td>
   </tr>
  
  
  
  1.1                  jakarta-avalon-site/docs/excalibur/altrmi/tests.html
  
  Index: tests.html
  ===================================================================
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Excalibur AltRMI / Tests</title>
  </head>
  <body bgcolor="#ffffff" marginheight="4" marginwidth="4" leftmargin="4" topmargin="4" alink="#023264" vlink="#023264" link="#525D76" text="#000000">
  <table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
  <td align="left" valign="top"><a href="http://jakarta.apache.org/index.html"><img src="images/jakarta-logo.gif" border="0" vspace="0" hspace="0"></a></td><td bgcolor="#ffffff" align="left" valign="top" width="100%"><img src="images/header.gif" align="right" border="0" vspace="0" hspace="0"></td>
  </tr>
  <tr>
  <td colspan="2" height="2" width="100%">
  <hr size="1" noshade="">
  </td>
  </tr>
  </table>
  <table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
  <td valign="top" width="1%"></td><td nowrap="1" valign="top" width="14%">
  <br>
  <font face="arial,helvetica,sanserif">
  <br>
  <br>
  <a href="http://jakarta.apache.org/avalon"><font size="+1" color="#778899">Back to Avalon</font></a>
  <br>
  <br>
  <a href="../index.html"><font size="+1" color="#778899">Back to Excalibur</font></a>
  <br>
  <br>
  <font size="+1" color="#000000">About</font>
  <br>
  <font size="-1">
  <ul>
  <li>
  <a href="index.html"><font size="-1">Overview</font></a>
  </li>
  <li>
  <a href="http://jakarta.apache.org/avalon/excalibur/index.html"><font size="-1">Excalibur Home</font></a>
  </li>
  <li>
  <a href="http://jakarta.apache.org/builds/jakarta-avalon/apps"><font size="-1">Download</font></a>
  </li>
  <li>
  <a href="api/index.html"><font size="-1">API Docs</font></a>
  </li>
  <li>
  <a href="otherfeatures.html"><font size="-1">Other Features</font></a>
  </li>
  <li>
  <a href="transports.html"><font size="-1">Transports</font></a>
  </li>
  </ul>
  </font>
  <br>
  <br>
  <font size="+1" color="#000000">Using</font>
  <br>
  <font size="-1">
  <ul>
  <li>
  <a href="facades.html"><font size="-1">Facade Design</font></a>
  </li>
  <li>
  <a href="generating-proxies.html"><font size="-1">Generating proxies</font></a>
  </li>
  <li>
  <a href="publishing.html"><font size="-1">Publishing</font></a>
  </li>
  <li>
  <a href="client-usage.html"><font size="-1">Client usage</font></a>
  </li>
  <li>
  <a href="pingers.html"><font size="-1">Pingers</font></a>
  </li>
  <li>
  <a href="connection-listeners.html"><font size="-1">Connection Listeners</font></a>
  </li>
  <li>
  <a href="tests.html"><font size="-1">Tests</font></a>
  </li>
  </ul>
  </font>
  <br>
  <br>
  </font></td><td align="left" valign="top" width="*">
  <title>Excalibur AltRMI / Tests</title>
  <center>
  <table width="100%">
  <tr>
  <td bgcolor="#99aabb">
  <center>
  <b><font face="arial,helvetica,sanserif" color="#000000" size="+2">Excalibur AltRMI / Tests</font></b>
  </center>
  </td>
  </tr>
  </table>
  </center>
  <br>
  <font size="-2" face="arial,helvetica,sanserif" color="#000000">
  <p>by <a href="mailto:Paul_Hammant@yahoo.com">Paul Hammant</a>
  </p>
  </font><font face="arial,helvetica,sanserif" color="#000000"></font>
  <br>
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="100%">
  <tr>
  <td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Introduction</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
        
  <p align="justify">
          There are a number of examples that come with AltRMI.  They are only present in the source
          download or the CVS depot, so we will assume that you have one or the other of these.
        </p>
      
  </font></td>
  </tr>
  </table>
  </div>
  <br>
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="100%">
  <tr>
  <td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Tests using AltRMI</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
        
  <p align="justify">
          The tests all run under Ant control.  Some tests are client and server, others are in a
          single VM. You may need two command shells for the client/server tests.
        </p>
        
  <p align="justify">
          The majority of the tests transfer a primary interface, TestInterface, between server and
          client.  It has a number of methods that test the passing of primatives and objects as
          parameters and return types.  Apart from this testing of features, the speed of the transport
          type is tested.  This is simply the counting of as many repetetive invocations of the same
          method in ten seconds as possible. It is used for an statistically incorrect comparison of
          transports.
        </p>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>ObjectStream Over Plain Sockets</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            The ObjectStream over plain sockets tests are launched from a build file called socketa.xml.
            You need two command shells.  In the first
            launch <em>ant -buildfile socketa.xml server</em>, and in the second <em>ant
            -buildfile socketa.xml client</em>
          
  </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>CustomStream Over Plain Sockets</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            The CustomStream over plain sockets tests are launched from a build file called socketb.xml.
            You need two command shells.  In the first
            launch <em>ant -buildfile socketb.xml server</em>, and in the second <em>ant
            -buildfile socketb.xml client</em>
          
  </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>CustomStream Over Plain Sockets, using callback handlers</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            The CustomStream over plain sockets tests are launched from a build file called socketc.xml.
            You need two command shells.  In the first
            launch <em>ant -buildfile socketc.xml server</em>, and in the second <em>ant
            -buildfile socketc.xml client</em>. The callback capable layer is not used to its
            fullest capacity, in that no callbacks ae setup.  This is most useful for a comparative
            speed test.
          </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>RMI</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            The RMI tests are launched from a build file called rmi.xml.
            You need two command shells.  In the first
            launch <em>ant -buildfile rmi.xml server</em>, and in the second <em>ant
            -buildfile rmi.xml client</em>.
          </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>Piped</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            The Piped tests are launched from a build file called piped.xml.
            You need a single shell. To test the piped transport with generated
            proxies already in the client's classloader,
            launch <em>ant -buildfile piped.xml clientclasses</em>. To test the piped
            transport with generated proxies retrieved from the server by the client,
            launch <em>ant -buildfile piped.xml serverclasses</em>. To test the piped
            transport with generated proxies generated on demand by the server for the client,
            launch <em>ant -buildfile piped.xml dynamicclasses</em>.
          </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>Direct</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            The Direct tests are launched from a build file called direct.xml.
            You need a single shell.  To test the direct connection of client and server
            launch <em>ant -buildfile direct.xml direct</em>. To test the direct
            connection of client and server with marshalling of communications
            launch <em>ant -buildfile direct.xml direct-marshalled</em>.
          </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
      
  </font></td>
  </tr>
  </table>
  </div>
  <br>
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="100%">
  <tr>
  <td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Tests not using AltRMI</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
        
  <p align="justify">
          These tests are used for a speed comparison of native Java techniques. This type of testing
          is possible because AltRMI uses normal Java interfaces. All are run from the proxies.xml Ant
          script in a single command shell.
        </p>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>Dynamic Proxy</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            This test uses dynamically generated proxies, which are normally used when you want to
            do implemetation hiding.  To test, launch
            <em>ant -buildfile proxies.xml dynamic-proxy</em>.
          </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>Coded Proxy</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            This test uses human crafted proxy. To test, launch
            <em>ant -buildfile proxies.xml coded-proxy</em>.
          </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
        
  <div align="right">
  <table cellspacing="0" cellpadding="2" border="0" width="99%">
  <tr>
  <td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>Non Proxy</b></font></td>
  </tr>
  <tr>
  <td><font face="arial,helvetica,sanserif" color="#000000">
  <br>
          
  <p align="justify">
            This test directly wires the server to the clint via TestInterface.  To test, launch
            <em>ant -buildfile proxies.xml un-proxy</em>.  This, of course, is the fastest
            possible connection of client and server.
          </p>
        
  </font></td>
  </tr>
  </table>
  </div>
  <br>
      
  </font></td>
  </tr>
  </table>
  </div>
  <br>
  </td>
  </tr>
  </table>
  <br>
  <table cellpadding="0" cellspacing="0" border="0" width="100%">
  <tr>
  <td>
  <hr size="1" noshade="">
  </td>
  </tr>
  <tr>
  <td align="center"><font color="#525D76" size="-1" face="arial,helvetica,sanserif"><i>
                Copyright &copy;1999-2002 by the Apache Software Foundation.
                All Rights Reserved.
              </i></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  

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