axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vinh Nguyen (vinguye2)" <vingu...@cisco.com>
Subject RE: [AXIS2] - How to control "To" element in the SOAP header?
Date Wed, 04 Jun 2008 23:00:53 GMT
Hi,
The WS-Addressing spec states that the "address" value of the
EndpointReference should be copied into the "To" header.  If
implementations are doing otherwise, they are probably not WS-Addressing
compliant.
 
See Section 2.3 of the following link:
http://www.w3.org/Submission/ws-addressing/
 
Hope this helps...
-Vinh

________________________________

From: Victor Solakhian [mailto:vsolakhian@copanion.com] 
Sent: Wednesday, June 04, 2008 3:01 PM
To: axis-user@ws.apache.org
Subject: RE: [AXIS2] - How to control "To" element in the SOAP header?



Hi Chinthaka,

 

Actually createSOAPEnvelope() method is mine. It creates an envelope
that has "To" element in the header according to specs of the Web
Servcies server. The Axis2 code that sends the message adds another "To"
header block using the value that was set in options.setTo() method.

 

The problem is that sometimes servers expect values in the "To" element
that differ from the value of the endpoint reference used to send
messages. I do not know if this is a bug in Axis2. I know that some
developers used Axis1 to successfully implement desired behavior.

 

Thanks

 

________________________________

From: Eran Chinthaka [mailto:eran.chinthaka@gmail.com] 
Sent: Wednesday, June 04, 2008 5:41 PM
To: axis-user@ws.apache.org
Subject: Re: [AXIS2] - How to control "To" element in the SOAP header?

 

Hi Victor,

If createSOAPEnvelope() method adds wsa:To header, then it is a bug,
IMO. Please create a bug in JIRA and someone will look in to this (but
it might take some time for me to commit in to this :( )

Thanks,
Chinthaka

On Wed, Jun 4, 2008 at 10:37 AM, Victor Solakhian
<vsolakhian@copanion.com> wrote:

I have code that creates a SOAP envelope and sends it using Axis2
ServiceCLient.

 

        EndpointReference targetEPR = 

        new EndpointReference("https://...");

 

        String action = "...";        

        client = new ServiceClient(ctx, null);

        operationClient =
client.createClient(ServiceClient.ANON_OUT_IN_OP);

 

        MessageContext outMsgCtx = new MessageContext();

        Options options = outMsgCtx.getOptions();

        options.setTo(targetEPR);

 
options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);

        options.setProperty(HTTPConstants.CHUNKED, false);

        options.setAction(action);

        

        outMsgCtx.setEnvelope(createSOAPEnvelope(operation, payload));

        operationClient.addMessageContext(outMsgCtx);

        operationClient.execute(true);

 

Now the createSOAPEnvelope(operation, payload)) method creates an
envelope with a header  that includes:

 

      <soapenv:Header>

                        ...

                        <wsa:To

 
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">

                                    urn:xxx.yyy.com.zzz

                        </wsa:To>

 

which is expected by the web services server, but Axis2 code adds
another To" element:

 

                        <wsa:To>

                                    https://...

                        </wsa:To>

 

to the header (using the endpoint reference set by
options.setTo(targetEPR)).

 

We need to set the targetEPR to  the options so that messages are sent
to the right place, but we need to have control on what is put in the
header.

 

Is there a way to avoid adding the targetEPR to the header?

 

Thanks,

 

Victor




-- 
With Mettha,
Eran Chinthaka

--------------------------------------------------------------------
Health is the greatest gift; contentment is the greatest wealth;
trusting is the best relationship; nirvana is the highest joy. -
Dhammapada 


Mime
View raw message