hammant     02/04/03 10:29:15

  Modified:    altrmi/src/xdocs index.xml
  Log:
  sectionize a bit more
  
  Revision  Changes    Path
  1.2       +55 -26    jakarta-avalon-excalibur/altrmi/src/xdocs/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/xdocs/index.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- index.xml 3 Apr 2002 13:59:22 -0000       1.1
  +++ index.xml 3 Apr 2002 18:29:15 -0000       1.2
  @@ -15,7 +15,7 @@
           AltRMI is a from-scratch replacement for RMI.  It has a number of 
different features that make it easier to use.  It tries as far as possible to 
be transparent in use.
         </p>
       </s1>          
  -    <s1 title="Feature Differencs">
  +    <s1 title="Feature Differences">
         <p>                
           Some good, some bad:
        <ul>
  @@ -38,16 +38,16 @@
          ignore the robustness issues is a mistake.  We think not given the 
following.
        <ol>
          <li>The EOB Container knows about AltrmiInvocationException.</li>
  -       <li>AltRMI has configurable policies that can help reestablish 
connection whilst in use.</li>
  +       <li>AltRMI has configurable policies that can help re-establish 
connection whilst in use.</li>
          <li>Standard handling of RemoteException sucks.</li>
          <li>It is difficult in EJB, in terms of coverage, to test your huge 
amounts of RemoteException handling code.</li>
  -       <li>Most webapp uses of beans have a single "handler" place where 
pertinent 
  +       <li>Most web-app uses of beans have a single "handler" place where 
pertinent 
          exceptions are already caught.</li>
        </ol>
         </p>      
  -      <s2 title="The EOB Container knows about AltrmiInvocationException">   
         
  +      <s2 title="1. The EOB Container knows about 
AltrmiInvocationException">            
           <p>
  -          A lot of beans coding is bean invokes method in bean which invokes 
method in bean.  In 
  +          A lot of beans coding is 'bean invokes method in bean which 
invokes method in bean'.  In 
             this case there are several places in the invocation stack where 
the container's logic 
             is delegating between beans.  Container could easily handle 
failing connections and take 
             multiple actions: re-establish report, redirect, abend services or 
server.  If there is 
  @@ -55,10 +55,10 @@
             say, 'contingency' beans.
           </p>
         </s2>
  -      <s2 title="AltRMI has configurable policies that can help reestablish 
connection whilst in use.">    
  +      <s2 title="2. AltRMI has configurable policies that can help 
reestablish connection whilst in use.">    
           <p>
             AltRMI has a pluggable architecture for re-establishing 
connections (and reporting timings 
  -          etc).  Whilst in the middle of an invocation, if the connection is 
lost, Altrmi can try to 
  +          etc).  Whilst in the middle of an invocation, if the connection is 
lost, AltRMI can try to 
             re-establish the connection and complete the method invocation 
normally.  A delay would of 
             course be encountered, but if administrators are watching the 
logs, then they can determine 
             where failures are happening and what to do long term about it.  
Programmed policies 
  @@ -66,36 +66,39 @@
             one a second", "fail immediately".
           </p>            
         </s2>
  -      <s2 title="Standard handling of RemoteException sucks.">    
  +      <s2 title="3. Standard handling of RemoteException sucks.">    
           <p>
  -         Referring to the various ways EJB teams handle RemoteException in 
the thousands of places in a typical J2EE solution where it thrown.  Different 
designs are...<br/>
  -     <br/>
  -        1. Declare throws RemoteException on every applicable method.<br/>  
  -     <br/>
  -           - That means that it can often arrive back at the container.  The 
container always reports it verbosely.<br/>
  -     
  -        2. Have a standard catch block and pass the RemoteException to a 
standard handler method that does something with it.  <br/>
  -     <br/>
  -           - That something can often by turn it into a custom derivative of 
RuntimeException as well as reporting it.  This strategy makes you wonder why 
it was not a derivative of RuntimeException in the first place.<br/>
  -     <br/>
  -        3. Try the failing method call again, or n times.
  -        <br/>
  -     
  -              - Clutters your code with reams of retry logic.  What if it 
still fails?  Combine this with (1) or (2) as well?
  +         Referring to the various ways EJB teams handle RemoteException, in 
the thousands of places 
  +         in a typical J2EE solution where it is thrown, different solutions 
are...<br/>
  +          <s3 title="3.1. Declare throws RemoteException on every applicable 
method.">
  +            <p>
  +           That means that it can often arrive back at the container.  The 
container always reports it verbosely.<br/>
  +         </p>
  +       </s3>
  +       <s3 title="3.2. Have a standard catch block and pass the 
RemoteException to a standard handler method that does something with it.">
  +         <p>
  +            That something can often by turn it into a custom derivative of 
RuntimeException as well as reporting it.  This strategy makes you wonder why 
it was not a derivative of RuntimeException in the first place.<br/>
  +         </p>
  +       </s3>
  +       <s3 title="3.3. Try the failing method call again, or n times.">
  +         <p>
  +              Clutters your code with reams of retry logic.  What if it 
still fails?  Combine this with (1) or (2) as well?
  +            </p>
  +       </s3>              
           </p>      
         </s2>
  -      <s2 title="It is difficult in EJB, in terms of coverage, to test your 
huge amounts of RemoteException handling code">    
  +      <s2 title="4. It is difficult in EJB, in terms of coverage, to test 
your huge amounts of RemoteException handling code">    
           <p>
             Your EJB team has developed a huge amount of code for the business 
logic, and consequentually 
             loads of code concerning RemoteException.  Question how do they 
test the "connection failing" 
             logic?  Do they rip out cables while the machine is in use?  No 
that does not yield good 
  -          coverage.  Do they have test cases and mock beans that throw 
RemotException?  Yes probably, 
  +          coverage.  Do they have test cases and mock beans that throw 
RemoteException?  Yes probably, 
             but that is an artificial connection outage.  However most teams 
do not test more than a 
             single case, and are happy for the same RemoteException handler 
block to be used all over 
             the place.
           </p>      
         </s2>
  -      <s2 title="Most webapp uses of beans have a single 'handler' place 
where pertinent 
  +      <s2 title="5. Most web-app uses of beans have a single 'handler' place 
where pertinent 
          exceptions are already caught.">    
           <p>
             Webapps that use multiple beans (assuming a decent MVC separation 
or a framework like Velocity) already have a place where central exception 
handling is going on.  With AltRMI, you can catch AltrmiInvocationException 
where you feel is fit.  EJB teams that choose to have throws RemoteException on 
all methods (percolating it up the stack) probably also choose to finally 
handle it centrally. Like so ...
  @@ -126,12 +129,38 @@
   }
   </source>
         </s2>    
  +    </s1>
  +    <s1 title="Things yet to do">    
  +      <p>
  +        There is an ongoing plan for features to be added to AltRMI.  On the 
  +        transports page, there are some related future requirements listed.  
Below are 
  +        the big features yet to do.
  +      </p>    
  +      <s2 title="Callback">
  +        <p>
  +          We have yet to implement callbacks.  We need to make the 
communication 
  +          asynchronous to do this.  We have toyed with standard APIs like 
BEEP but
  +          find the performance is not quite good enough.  We may not need the
  +          sustained power of BEEP as our needs are for short bursts rather 
than
  +          multiplexing sustained streams.
  +        </p>
  +      </s2>
  +      <s2 title="True dynamic creation of Proxies">
  +        <p>
  +          We curently use javac to compile stubs from source.  It feels 
natuaral to use
  +          this technique as we think in terms of the Java the language.  We 
know that
  +          the main interface to Javac is deprecated in JDK1.4 and feel we 
should move to
  +          some less static and more beanlike tool.  An obvious choice would 
be BCEL, but we
  +          find it too hard to work with (it being closer to bytecode machine 
than the Java
  +          language).
  +        </p>
  +      </s2>  
       </s1>    
     </body>
     <footer>
       <legal>
         Copyright (c) @year@ The Jakarta Apache Project All rights reserved.
  -      $Revision: 1.1 $ $Date: 2002/04/03 13:59:22 $
  +      $Revision: 1.2 $ $Date: 2002/04/03 18:29:15 $
       </legal>
     </footer>
   </document>
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to