avalon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hamm...@apache.org
Subject 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
Date Wed, 01 May 2002 18:44:17 GMT
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:   <mailto:avalon-cvs-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@jakarta.apache.org>


Mime
View raw message