You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Vance Maverick <ma...@cs.unibo.it> on 2003/10/30 15:36:09 UTC

Proposal: handlerInfoChain at deployment and globalConfiguration levels

I would like to be able to declare JAX-RPC-style Handlers at levels above
the individual service.  I'm particularly interested in declaring them at
the globalConfiguration level, but while I'm at it, it seems only natural to
support them at the deployment level as well.  (Both levels already allow
requestFlow and responseFlow declaration of Axis-style Handlers.)  And while
I'm doing this to meet a need of my own, I would ultimately like to
contribute the work to the Axis project -- so I'd like to get feedback from
the community on the best way to do it.

Syntactically, the only novelty will be to allow the existing
handlerInfoChain element as a child of deployment and of
globalConfiguration, as well as of service.

As for the semantics, I believe that it's pretty straightforward to say that
the handler chain for a service consists (in order) of
- the globalConfiguration handler chain, if any
- followed by the deployment chain, if any
- followed by the chain declared for the service itself, if any.
Thus in the sample deployment file below, the JAX-RPC chain for service X
consists of handlers 1, 2, and 3, in that order; the chain for service Y is
handlers 1, 2, and 4.

What do people think?  The implementation seems pretty straightforward
(small modifications to WSDDService, WSDDDeployment,
WSDDGlobalConfiguration; support for concatenation in
WSDDJAXRPCHandlerInfoChain).  Existing WSDD files would continue to work as
expected.

Is there a Sun proposal for configuring these chains that should be taken
into account?

    Vance

== Simplified example of extended handlerInfoChain syntax ==
<deployment>
 <handlerInfoChain>
  <handlerInfo classname="handler.2"/>
 </handlerInfoChain>

 <service name="X" provider="java:RPC">
  <parameter name="className" value="service.X"/>

  <handlerInfoChain>
   <handlerInfo classname="handler.3"/>
  </handlerInfoChain>
 </service>

 <service name="Y" provider="java:RPC">
  <parameter name="className" value="service.Y"/>

  <handlerInfoChain>
   <handlerInfo classname="handler.4"/>
  </handlerInfoChain>
 </service>

 <globalConfiguration>
  <handlerInfoChain>
   <handlerInfo classname="handler.1"/>
  </handlerInfoChain>
 </globalConfiguration>
</deployment>