Hi Steve, Glen and all of axis-dev folks,

  Despite no ACK, I'd like to carry on a one-sided conversation. :-)

>  Now, even though we take the "pre-flight-check" logic, it still
>might be scant.  Please refer to the attached.  I pointed out two
>problems on it.
>  Do you already have any ideas for these problems ?

[Report of issues]
  1) How can we recognize that which of the MU headers are
     bound for the runtime to do process ?
  2) Without the execution of the registered JAX-RPC handlers,
     we never know whether all MU headers are processable, or not.

[Proposal]
  Abstract:
     In order to solve the above two issues, I'd like to propose
     an enhancement to the description rules for wsdd (Web Services
     Deployment Descriptor) of Axis.

  Detail:
     - Specify a new node "delegatedMUheader", to make clear
       the deployer's belief that which of the MU headers are
       bound for the runtime to do process
     - Specify a new node "responsibleMUheander", to make clear
       a chosen handler instance is responsible to the specified
       MU headers for processing

  Note:
    - Axis can exclude un-supported MU headers when a user deploys
      a Web Service with the "enhanced" wsdd.
    - Axis can know which MU headers are bound for me (i.e. JAX-RPC
      runtime implementation), determinately.
    - Axis can know whether an MU header is processable or not
      without the execution of any user implementations.
    - Axis will take care of a MU header, if either conditions are met.
      a) A "delegatedMUheader" node is defined in wsdd clearly.
      b) A "delegatedMUheader" node is NOT defined in wsdd, but the
         targeted MU header is also NOT listed in "handlerInfoChain"
         as a "responsibleMUheander" node.

[Sample of wsdd file]
  Please pay attention to the highlighted lines below with "|".
  These lines are expanded.
.........*.........*.........*.........*.........*.........*.........*
  <deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/" 
      xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="jaxrpchandler" provider="java:RPC">
|     <delegatedMUheader name="MuHeaderName1"value="URI1"/>
|     <delegatedMUheader name="MuHeaderName2"value="URI2"/>
|     <delegatedMUheader name="MuHeaderName3"value="URI3"/>
|     <delegatedMUheader name="MuHeaderName4"value="URI4"/>
      <handlerInfoChain>
        <handlerInfo classname="test.ServerHandler1">
|         <responsibleMUheander name="MuHeaderName5"value="URI5">
|         <responsibleMUheander name="MuHeaderName6"value="URI6">
        </handlerInfo>
        <handlerInfo classname="test.ServerHandler2"/>
        <handlerInfo classname="test.ServerHandler3">
|         <responsibleMUheander name="MuHeaderName1"value="URI1">
        </handlerInfo>
      </handlerInfoChain>
      <parameter name="className" value="test.StockQuoteImpl"/>
      <parameter name="allowedMethods" value="getQuote"/>
      <parameter name="wsdlServicePort" value="GetQuote"/>
    </service>
  </deployment>
.........*.........*.........*.........*.........*.........*.........*

  Any constructive comments, objections, and an approval will be
appreciated.  If you can't see the above issues, please feel free
to ask me.

Regards,

   Toshi (Toshiyuki Kimura) <[EMAIL PROTECTED]>
   R&D Headquarters
   NTT DATA Corporation

-----Original Message-----
From: Toshiyuki Kimura [mailto:[EMAIL PROTECTED]
Sent: Monday, August 11, 2003 7:53 PM
To: [EMAIL PROTECTED]
Subject: Re: MustUnderstand faults

Hi Steve and Glen,

> > Glen> In cases where no back-end state is affected by 
> > Glen> the service invocation (i.e. all the interop tests),
> > Glen> it doesn't actually matter.
> > 
> Steve> I think its trivial to test, as its almost the same
> Steve> as the test that a service is stateful.
> 
Glen> I didn't say it was difficult or complicated...
Glen> I said it was subtle. :)

  It seems that even if MU headers are not understood by the
targeted end-point, you accept a service invocation which has
no back-end state.  Right ?

  In my humble opinion, the checking of MU headers should
be cared *before* the service invocation.  Could you take a
look at the following snippets ?

<snippet of JAX-RPC 1.0 spec>
 If one or more of the header blocks identified in the preceding
 step are not understood by this node then generate a single SOAP
 MustUnderstand fault. If such a fault is generated, any further
 processing is not done.
</snippet of JAX-RPC 1.0 spec>

  On the other hand, there is another issue to be discussed. The
point is a role of the SOAP mustUnderstand attribute.  I believe
that the MU attribute is not only for the runtime, but also for
an end-point implementation.
  Or rather, I think that we should care more prudently how the
end-point process the attribute.  Because the final destination
of the MU header is JAX-RPC handlers of the Web Service impl.
(i.e. The JAX-RPC runtime like as Axis is just an intermediator.)
Thus, I agreed you on "pre-flight-check" in my last mail.

  Now, even though we take the "pre-flight-check" logic, it still
might be scant.  Please refer to the attached.  I pointed out two
problems on it.
  Do you already have any ideas for these problems ?

Regards,

   Toshi (Toshiyuki Kimura) <[EMAIL PROTECTED]>
   R&D Headquarters
   NTT DATA Corporation

Reply via email to