You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Jeff Greif <jg...@alumni.princeton.edu> on 2004/02/05 22:55:33 UTC

Use of Message services

For obscure reasons, I am interposing a adaptor web service between a client
and the target web service, in order to manipulate the SOAP envelopes sent
by the client and returned by the target service.

Presumably this could be done better using handlers, but I have to defer
that approach until it can be integrated into the (large) client application
properly.

The client uses rpc operations from a WSDL similar to the target web
service's (but modified in some way).  The adaptor service does not conform
to this WSDL -- it uses style="message" and has one method with signature

   public void process(SOAPEnvelope request,
                              SOAPEnvelope response)

The transformations are done by XSLT depending on the operation name found
in the request, before forwarding the transformed request envelope to the
target service.  A similar manipulation is done to the response from the
target.

Presumably the adaptor service can be selected by the URL of client http
request.  The question is, how does the Axis server know to call the one
method of the service, when the request SOAP packet does not mention its
name?  Can this be done via the SOAPAction URI (e.g. have all the operations
in the WSDL the client sees use the same soap action associated with the
adapter service?)  Is some other alternative possible using some handler
setting something in the MessageContext?

Jeff


Re: Use of Message services

Posted by Jeff Greif <jg...@alumni.princeton.edu>.
----- Original Message ----- 
From: "Jeff Greif" <jg...@alumni.princeton.edu>
To: <ax...@ws.apache.org>
Sent: Thursday, February 05, 2004 1:55 PM
Subject: Use of Message services


> For obscure reasons, I am interposing a adaptor web service between a
client
> and the target web service, in order to manipulate the SOAP envelopes sent
> by the client and returned by the target service.
>
...
> Presumably the adaptor service can be selected by the URL of client http
> request.  The question is, how does the Axis server know to call the one
> method of the service, when the request SOAP packet does not mention its
> name?  Can this be done via the SOAPAction URI (e.g. have all the
operations
> in the WSDL the client sees use the same soap action associated with the
> adapter service?)  Is some other alternative possible using some handler
> setting something in the MessageContext?

After some traversal of the source, I can answer my own question, in case
anyone
else is interested.  A message service, at least in Axis 1.1, is required to
have just one method, that method having one of the 4 allowed signatures.
The request envelope does not need to be examined to determine the method
for dispatch.

Jeff