You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by Jaliya Ekanayake <ja...@opensource.lk> on 2005/08/03 12:04:22 UTC

Re: FW: More on Axis Serialization with Sandesha

Hi Lakshmi,

Please see my answeres below.

Thanks,

Jaliya

Lakshmi Chaparala wrote:

> Hi Jaliya,
>
>  
>
> I forgot to send you the tcpmon output of my request. The following is 
> from TCPMON running with Sandesha:
>
>  
>
> POST /gateway/services/DataMaintenanceSOAPPort HTTP/1.0
>
> Content-Type: text/xml; charset=utf-8
>
> Accept: application/soap+xml, application/dime, multipart/related, text/*
>
> User-Agent: Axis/1.2
>
> Host: 127.0.0.1:80
>
> Cache-Control: no-cache
>
> Pragma: no-cache
>
> SOAPAction: "http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence"
>
> Content-Length: 1711
>
>  
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
> xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
> xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header>
>
> <wsse:Security 
> xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
> soapenv:mustUnderstand="1">
>
> <wsse:UsernameToken><wsse:Username>wsuser</wsse:Username><wsse:Password 
> Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">l4AA7n02Afbp6840fgWGueW2kEo=</wsse:Password><wsse:Nonce>6FDfHuY+qnKSR9xGXzAIsw==</wsse:Nonce><wsu:Created 
> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2005-07-29T19:56:19Z</wsu:Created></wsse:UsernameToken></wsse:Security><wsa:MessageID 
> soapenv:mustUnderstand="0">uuid:d2267500-006a-11da-86dc-fc82bc0dd46e</wsa:MessageID><wsa:To 
> soapenv:mustUnderstand="0">http://localhost:80/gateway/services/DataMaintenanceSOAPPort</wsa:To><wsa:Action 
> soapenv:mustUnderstand="0">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</wsa:Action><wsa:From 
> soapenv:mustUnderstand="0"><wsa:Address>http:// 
> localhost:9090/axis/services/RMService</wsa:Address></wsa:From><wsa:ReplyTo 
> soapenv:mustUnderstand="0"><wsa:Address>http:// 
> localhost:9090/axis/services/RMService</wsa:Address></wsa:ReplyTo></soapenv:Header>
>
> <soapenv:Body><wsrm:CreateSequence><wsrm:AcksTo><wsa:Address>http://localhost:9090/axis/services/RMService</wsa:Address></wsrm:AcksTo></wsrm:CreateSequence>
>
> </soapenv:Body>
>
> </soapenv:Envelope>
>
>  
>
>    1. Why does Sandesha create a new SOAPENV:BODY with  CreateSequence
>       tags and not my original query? Ususually when I run my client I
>       get the following SOAP request:
>
Sandesha is an implementation of WS-ReliableMessaging protocol. 
According to the spec the first message for any set (sequnce) of 
messages is the CreateSequenceRequest message that is used to get a 
unique ID from the server. Please see 
:http://specs.xmlsoap.org/ws/2005/02/rm/ws-reliablemessaging.pdf
These messages are not for your applications and they are all for the RM 
Endpoint in the server side.

>   1.
>
>
>  
>
> POST /gateway/services/DataMaintenanceSOAPPort HTTP/1.0
>
> Content-Type: text/xml; charset=utf-8
>
> Accept: application/soap+xml, application/dime, multipart/related, text/*
>
> User-Agent: Axis/1.2.1
>
> Host: 127.0.0.1:80
>
> Cache-Control: no-cache
>
> Pragma: no-cache
>
> SOAPAction: "query"
>
> Content-Length: 969
>
>  
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>
> <soapenv:Header>
>
> <wsse:Security 
> xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
> soapenv:mustUnderstand="1">
>
> <wsse:UsernameToken><wsse:Username>wsuser</wsse:Username><wsse:Password 
> Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">Q/unQPXGCFNzdMXlvBvtXNpO5T4=</wsse:Password><wsse:Nonce>MNxhscOG+fin/QaEHTf27A==</wsse:Nonce><wsu:Created 
> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2005-08-02T21:10:06Z</wsu:Created></wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body><Query 
> xmlns="http://www.issinc.com/gateway/services"><snl>*SHOW 
> Clashes*</snl></Query></soapenv:Body></soapenv:Envelope>
>
>  
>
>    2. Why is Sandesha not setting my operation, <snl>*SHOW
>       Clashes*</snl>  in the body? If Sandesha resets my query, none
>       of my custom serializers and deserializers would work.
>
Sandesha is not reseting your query. It will be sent as the second 
message. First message would be the CreateSequenceRequest and next you 
will see your message.

>   2.
>
>
>  
>
> Any advice regarding this is appreciated.
>
>  
>
> Thanks
>
>  
>
>  
>
> Lakshmi Chaparala
>
> Software Engineer
>
> Intelligent Software Solutions
>
> Email:lakshmi.chaparala@issinc.com
>
According to your scenario you are trying to use WS-Security and 
Sandesha (WS-RM)  both for your messages. IMHO in the client side, 
security should be applied after RM. That is, all the messages should be 
secured for a communication including the RM messages 
(CreateSequenceRequest, Acks and TerminateSequence etc.)

However since Sandesha is using a separate sender we are using a 
separate properties (sandesha.properties) file to get the handler 
details that should come after the WS-RM phase.

Currently we CANOT sepcify any parameters for the handlers that we 
specify in the "sandesha.proerties"

*Please do the following changes*

Check whether you have specify the "ctx.setLastMessage(call);" to inform 
that this is the last message.
In the server-config.wsdd

*server-config.wsdd*:

 

<!-- <service name="DataMaintenanceSOAPPort" provider="java:RPC" 
style="document" use="literal"> -->

*<service name="DataMaintenanceSOAPPort" provider="handler"> *

  <wsdlFile>DataMaintenanceService.wsdl</wsdlFile>

  <operation name="query" qname="query" returnQName="ns32:DataObjectSet" 
returnType="ns32:DataObjectSet"

              soapAction="query" 
xmlns:ns32="http://www.issinc.com/gateway/services">

          <parameter qname="ns32:Query" type="ns32:Query"/>

          <fault class="ipt.tas.gateway.common.GatewayServiceException" 
qname="ns32:GatewayServiceException"

             type="ns32:GatewayServiceException"/>

  </operation> 

  <requestFlow>

   <handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">

    <parameter name="passwordCallbackClass" 
value="ipt.tas.gateway.security.PWCallback"/>

    <parameter name="action" value="UsernameToken"/>

   </handler>

  </requestFlow>

  <requestFlow>

     <handler 
type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"/>

     <handler 
type="java:org.apache.axis.message.addressing.handler.AddressingHandler"/>

  </requestFlow>

  <parameter name="handlerClass" 
value="org.apache.sandesha.ws.rm.providers.RMProvider"/>

  <parameter name="allowedMethods" value=" query"/>

  <parameter name="restrictUserAccess" value="true"/>

  <parameter name="typeMappingVersion" value="1.2"/>

  <parameter name="wsdlPortType" value="DataMaintenancePortType"/>

  <parameter name="className" 
value="ipt.tas.gateway.service.data_maint.DataMaintenanceSOAPBindingImpl"/>

  <parameter name="wsdlServicePort" value="DataMaintenanceSOAPPort"/>

  <parameter name="wsdlTargetNamespace" 
value="http://www.issinc.com/gateway/services/wsdl"/>

  <parameter name="wsdlServiceElement" value="DataMaintenanceService"/>

  <typeMapping 
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" 
encodingStyle="" qname="ns47:Query"

                  
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" 
type="java:ipt.tas.gateway.common.Query"  

                xmlns:ns47="http://www.issinc.com/gateway/services"/> 

 </service>

If there are any more problems let me know.


>  
>
> ------------------------------------------------------------------------
>
> *From:* Lakshmi Chaparala [mailto:lakshmi.chaparala@issinc.com]
> *Sent:* Tuesday, August 02, 2005 7:37 AM
> *To:* 'Jaliya Ekanayake'
> *Subject:* RE: Sandesha ERRORS
>
>  
>
> Hi Jaliya,
>
>  
>
> Thanks for the reply. Yes this has been working before I added 
> Sandesha in my Stub code. If I remove or comment out Sandesha from 
> this code, my JUnit test passes.
>
>  
>
> My *client Stub code has*:
>
>  
>
>         String defaultServerPort = "80";
>
>         String defaultClientPort = "9090";
>
>         String targetURL = 
> "http://localhost:80/gateway/services/DataMaintenanceSOAPPort";
>
>         SandeshaContext ctx = new SandeshaContext();
>
>        ctx.setAcksToURL(Constants.WSA.NS_ADDRESSING_ANONYMOUS);
>
>        ctx.setReplyToURL("http://127.0.0.1:" + defaultClientPort +
>
>                                        "/gateway/services/RMService");
>
>  
>
>        org.apache.axis.client.Call _call = createCall();
>
>  
>
>        ctx.initCall(_call, targetURL, "urn:wsrm:query",
>
>       
>                     org.apache.sandesha.Constants.ClientProperties.IN_OUT);
>
>  
>
>        _call.setOperation(_operations[0]);
>
>        _call.setUseSOAPAction(true);
>
>        _call.setSOAPActionURI("query");
>
>        _call.setEncodingStyle(null);
>
>        _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, 
> Boolean.FALSE);
>
>        
> _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS,Boolean.FALSE);
>
>        
> _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
>
>        _call.setOperationName(new javax.xml.namespace.QName("", "query"));
>
>        setRequestHeaders(_call);
>
>        setAttachments(_call);
>
>        java.lang.Object _resp = _call.invoke(new java.lang.Object[] 
> {query});
>
>  
>
> *client-config.wsdd: *
>
>  
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" 
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>
>  <globalConfiguration>
>
>   <parameter name="adminPassword" value="admin"/>
>
>   <parameter name="enableNamespacePrefixOptimization" value="true"/>
>
>   <parameter name="disablePrettyXML" value="true"/>
>
>   <parameter name="sendMultiRefs" value="true"/>
>
>   <parameter name="sendXsiTypes" value="true"/>
>
>   <parameter name="attachments.implementation" 
> value="org.apache.axis.attachments.AttachmentsImpl"/>
>
>   <parameter name="sendXMLDeclaration" value="true"/>
>
>    <requestFlow>
>
>      <handler type="java:org.apache.ws.axis.security.WSDoAllSender">
>
>        <parameter name="action" value="UsernameToken"/>
>
>        <parameter name="user" value="wsuser"/>
>
>        <parameter name="passwordType" value="PasswordDigest"/>
>
>        <parameter name="passwordCallbackClass" 
> value="ipt.tas.gateway.security.PWCallback"/>
>
>      </handler>
>
>    </requestFlow>
>
>  </globalConfiguration>
>
>  <handler name="RMSender" 
> type="java:org.apache.sandesha.client.RMSender"/>
>
>   <transport name="java" 
> pivot="java:org.apache.axis.transport.java.JavaSender"/>
>
>   <transport name="http" 
> pivot="java:org.apache.axis.transport.http.HTTPSender"/>
>
>   <transport name="local" 
> pivot="java:org.apache.axis.transport.local.LocalSender"/>
>
>  <transport name="RMTransport" pivot="RMSender"/>
>
> </deployment>
>
>  
>
> and
>
> *server-config.wsdd*:
>
>  
>
> <service name="DataMaintenanceSOAPPort" provider="java:RPC" 
> style="document" use="literal">
>
>   <wsdlFile>DataMaintenanceService.wsdl</wsdlFile>
>
>   <operation name="query" qname="query" 
> returnQName="ns32:DataObjectSet" returnType="ns32:DataObjectSet"
>
>               soapAction="query" 
> xmlns:ns32="http://www.issinc.com/gateway/services">
>
>           <parameter qname="ns32:Query" type="ns32:Query"/>
>
>           <fault 
> class="ipt.tas.gateway.common.GatewayServiceException" 
> qname="ns32:GatewayServiceException"
>
>              type="ns32:GatewayServiceException"/>
>
>   </operation> 
>
>   <requestFlow>
>
>    <handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
>
>     <parameter name="passwordCallbackClass" 
> value="ipt.tas.gateway.security.PWCallback"/>
>
>     <parameter name="action" value="UsernameToken"/>
>
>    </handler>
>
>   </requestFlow>
>
>   <requestFlow>
>
>      <handler 
> type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"/>
>
>      <handler 
> type="java:org.apache.axis.message.addressing.handler.AddressingHandler"/>
>
>   </requestFlow>
>
>   <parameter name="handlerClass" 
> value="org.apache.sandesha.ws.rm.providers.RMProvider"/>
>
>   <parameter name="allowedMethods" value=" query"/>
>
>   <parameter name="restrictUserAccess" value="true"/>
>
>   <parameter name="typeMappingVersion" value="1.2"/>
>
>   <parameter name="wsdlPortType" value="DataMaintenancePortType"/>
>
>   <parameter name="className" 
> value="ipt.tas.gateway.service.data_maint.DataMaintenanceSOAPBindingImpl"/>
>
>   <parameter name="wsdlServicePort" value="DataMaintenanceSOAPPort"/>
>
>   <parameter name="wsdlTargetNamespace" 
> value="http://www.issinc.com/gateway/services/wsdl"/>
>
>   <parameter name="wsdlServiceElement" value="DataMaintenanceService"/>
>
>   <typeMapping 
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" 
> encodingStyle="" qname="ns47:Query"
>
>                   
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" 
> type="java:ipt.tas.gateway.common.Query"  
>
>                 xmlns:ns47="http://www.issinc.com/gateway/services"/> 
>
>  </service>
>
>  
>
>  
>
> Appreciate your advice.
>
> Thanks
>
>  
>
> Lakshmi Chaparala
>
> Software Engineer
>
> Intelligent Software Solutions
>
> Email:lakshmi.chaparala@issinc.com
>
>  
>
> -----Original Message-----
> From: Jaliya Ekanayake [mailto:jaliya@opensource.lk]
> Sent: Tuesday, August 02, 2005 4:04 AM
> To: Lakshmi Chaparala
> Subject: Re: Sandesha ERRORS
>
>  
>
> Hi Lakshmi,
>
>  
>
>  
>
> I am sorry for the late reply.
>
>  
>
> Could you please veryfy me you get the complete message path working
>
> without sandesha  but using only the
>
> WSDoAllSender in your client request flow as you have mentioned? (Need
>
> to change the client code a bit and the client-config and the 
> server-config)
>
> Sandesha does not handle any serialization stuff and it is done by the
>
> Axis itself.
>
>  
>
> Thanks,
>
>  
>
> Jaliya
>
>  
>
>  
>
> Lakshmi Chaparala wrote:
>
>  
>
>>Hi Jaliya,
>
>> 
>
>>I still get the following error when I add Sandesha to my Client Stub 
> code:
>
>> 
>
>>ERROR - org.xml.sax.SAXException: SimpleDeserializer encountered a child
>
>>element, which is NOT expected, in something it was trying to deserialize.
>
>> 
>
>>Is there a way to tell Sandesha to use BeanDeserializer and not
>
>>SimpleDeserializer?
>
>> 
>
>> 
>
>>Thanks
>
>> 
>
>>Lakshmi Chaparala
>
>>Software Engineer
>
>>Intelligent Software Solutions
>
>>Email:lakshmi.chaparala@issinc.com
>
>> 
>
>> 
>
>>-----Original Message-----
>
>>From: Jaliya Ekanayake [mailto:jaliya@opensource.lk]
>
>>Sent: Thursday, July 28, 2005 9:58 PM
>
>>To: Lakshmi Chaparala
>
>>Subject: Re: Sandesha ERRORS
>
>> 
>
>>Hi Lakshmi,
>
>> 
>
>>Yes, this has been fixed in the current code. If you have taken the RC1
>
>>please take a checkout from 
>
>>http://svn.apache.org/repos/asf/webservices/sandesha/trunk/
>
>> 
>
>>and build Sandesha jar using the maven.
>
>> 
>
>>Or if you can wait till tomorrow and get Sandesha 1.0 :)
>
>>We plan to release it today :)
>
>> 
>
>>Thanks,
>
>> 
>
>>Jaliya
>
>> 
>
>> 
>
>> 
>
>> 
>
>>Lakshmi Chaparala wrote:
>
>> 
>
>> 
>
>> 
>
>>>Hi,
>
>>> 
>
>>>1.       I have a request flow configured on the server in 
> server-config.wsdd
>
>>>under my Service called DataMaintenance.
>
>>> 
>
>>><requestFlow>
>
>>> 
>
>>>   <handler
>
>>>type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"></han
>
>>>   
>
>>> 
>
>>d
>
>> 
>
>> 
>
>>>ler>
>
>>> 
>
>>>   <handler
>
>>>type="java:org.apache.axis.message.addressing.handler.AddressingHandler"></
>
>>>   
>
>>> 
>
>>h
>
>> 
>
>> 
>
>>>andler>
>
>>> 
>
>>> </requestFlow>
>
>>> 
>
>>> <parameter name="handlerClass"
>
>>>value="org.apache.sandesha.ws.rm.providers.RMProvider"/>
>
>>> 
>
>>>2.       client-config.wsdd has the following flows:
>
>>> 
>
>>><?xml version="1.0" encoding="UTF-8"?>
>
>>> 
>
>>><deployment xmlns="http://xml.apache.org/axis/wsdd/"
>
>>>xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>
>>> 
>
>>><globalConfiguration>
>
>>> 
>
>>>  <parameter name="defaultSOAPVersion" value="1.2"/>
>
>>> 
>
>>>  <parameter name="disablePrettyXML" value="true"/>
>
>>> 
>
>>>  <parameter name="adminPassword" value="admin"/>
>
>>> 
>
>>>  <parameter name="enableNamespacePrefixOptimization" value="true"/>"
>
>>> 
>
>>>  <parameter name="sendXsiTypes" value="true"/>
>
>>> 
>
>>>  <parameter name="sendMultiRefs" value="true"/>
>
>>> 
>
>>>  <parameter name="sendXMLDeclaration" value="true"/>
>
>>> 
>
>>>  <requestFlow>
>
>>> 
>
>>>    <handler type="java:org.apache.ws.axis.security.WSDoAllSender">
>
>>> 
>
>>>      <parameter name="action" value="UsernameToken"/>
>
>>> 
>
>>>      <parameter name="user" value="wsuser"/>
>
>>> 
>
>>>      <parameter name="passwordType" value="PasswordDigest"/>
>
>>> 
>
>>>      <parameter name="passwordCallbackClass"
>
>>>value="ipt.tas.gateway.security.PWCallback"/>
>
>>> 
>
>>>    </handler>
>
>>> 
>
>>>  </requestFlow>
>
>>> 
>
>>></globalConfiguration>
>
>>> 
>
>>><handler name="RMSender" 
> type="java:org.apache.sandesha.client.RMSender"/>
>
>>> 
>
>>> <transport name="java"
>
>>>pivot="java:org.apache.axis.transport.java.JavaSender"/>
>
>>> 
>
>>> <transport name="http"
>
>>>pivot="java:org.apache.axis.transport.http.HTTPSender"/>
>
>>> 
>
>>> <transport name="local"
>
>>>pivot="java:org.apache.axis.transport.local.LocalSender"/>
>
>>> 
>
>>><transport name="RMTransport" pivot="RMSender"/>
>
>>> 
>
>>></deployment>
>
>>> 
>
>>>3.       My client stub code has :
>
>>> 
>
>>>      org.apache.axis.client.Call _call = createCall();
>
>>> 
>
>>>      SandeshaContext ctx = new SandeshaContext();
>
>>> 
>
>>>      ctx.initCall(_call,
>
>>>targetURL,"urn:wsrm:query",org.apache.sandesha.Constants.ClientProperties.I
>
>>>   
>
>>> 
>
>>N
>
>> 
>
>> 
>
>>>_OUT);
>
>>> 
>
>>>       _call.setOperation(_operations[0]);
>
>>> 
>
>>>       _call.setUseSOAPAction(true);
>
>>> 
>
>>>       _call.setSOAPActionURI("query");
>
>>> 
>
>>>       _call.setEncodingStyle(null);
>
>>> 
>
>>>       _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR,
>
>>>Boolean.FALSE);
>
>>> 
>
>>>       _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS,
>
>>>Boolean.FALSE);
>
>>> 
>
>>> 
>
>>>_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
>
>>> 
>
>>>       _call.setOperationName(new javax.xml.namespace.QName("", 
> "query"));
>
>>> 
>
>>>       setRequestHeaders(_call);
>
>>> 
>
>>>       setAttachments(_call);
>
>>> 
>
>>>      java.lang.Object _resp = _call.invoke(new
>
>>>   
>
>>> 
>
>>java.lang.Object[]{query});
>
>> 
>
>> 
>
>>> 
>
>>>Sandesha.jar and Addressing.jar are in my classpath, deployed in JBOSS
>
>>>Application server version 4.0.2
>
>>> 
>
>>>4.       Query is defined in my xsd as:
>
>>> 
>
>>><xsd:element name="Query">
>
>>> 
>
>>>   <xsd:complexType>
>
>>> 
>
>>>     <xsd:sequence>
>
>>> 
>
>>>       <xsd:element name="snl" type="xsd:string"/>
>
>>> 
>
>>>       <xsd:element name="attrs" type="xsd:string" minOccurs="0"
>
>>>maxOccurs="unbounded"/>
>
>>> 
>
>>>     </xsd:sequence>
>
>>> 
>
>>>   </xsd:complexType>
>
>>> 
>
>>>I am using doc/literal style of SOAP message and I get errors using
>
>>>   
>
>>> 
>
>>Sandesha
>
>> 
>
>> 
>
>>>API. When I run my client, I get:
>
>>> 
>
>>> 
>
>>> 
>
>>>-=-=-=-=-=-= Starting testQuery -=-=-=-=-=-=-=-=
>
>>> 
>
>>>Calling query with SNL=SHOW Clashes
>
>>> 
>
>>>INFO - starting up SimpleAxisServer on port 9090
>
>>>(C:\cvshome\gateway\GATEWAY)
>
>>> 
>
>>>ERROR - org.xml.sax.SAXException: SimpleDeserializer encountered a child
>
>>>element, which is NOT expected, in something it was trying to 
> deserialize.
>
>>> 
>
>>>Is this an Axis bug or error in my Sandesha configuration?
>
>>> 
>
>>>Thanks and appreciate your response regarding this.
>
>>> 
>
>>> 
>
>>> 
>
>>> 
>
>>> 
>
>>>Lakshmi Chaparala
>
>>> 
>
>>>Software Engineer
>
>>> 
>
>>>Intelligent Software Solutions
>
>>> 
>
>>>Email:lakshmi.chaparala@issinc.com
>
>>> 
>
>>> 
>
>>> 
>
>>> 
>
>>>
>
>>> 
>
>>>   
>
>>> 
>
>> 
>
>> 
>
>> 
>
>> 
>
>> 
>
>> 
>
>> 
>
> a
>
>  
>


RE: FW: More on Axis Serialization with Sandesha

Posted by Lakshmi Chaparala <la...@issinc.com>.
Hi Jaliya,

 

I made all the changes that you have suggested. My client stub seemed to
have gone past the serialization errors but now all addressing headers in my
message are missing. Is there something else I need to configure to get
those headers back in to the soap message?

 

Thanks  for your time, for looking into this.

 

 

 My TCPMON request and response are as follows:

 

REQUEST:

 

POST /gateway/services/DataMaintenanceSOAPPort HTTP/1.0

Content-Type: text/xml; charset=utf-8

Accept: application/soap+xml, application/dime, multipart/related, text/*

User-Agent: Axis/1.2.1

Host: 127.0.0.1:80

Cache-Control: no-cache

Pragma: no-cache

SOAPAction: "http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence"

Content-Length: 1721

 

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header>

<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuri
ty-secext-1.0.xsd" soapenv:mustUnderstand="1">

<wsse:UsernameToken><wsse:Username>wsuser</wsse:Username><wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token
-profile-1.0#PasswordDigest">KD+fxqEVwTV59ihZ3c7nlf4qf8w=</wsse:Password><ws
se:Nonce>rFqYzq/9YNHG1gMpyl5omg==</wsse:Nonce><wsu:Created
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurit
y-utility-1.0.xsd">2005-08-03T20:34:38Z</wsu:Created></wsse:UsernameToken></
wsse:Security><wsa:MessageID
soapenv:mustUnderstand="0">uuid:fda883c0-045d-11da-ac5a-935dc4944e2a</wsa:Me
ssageID><wsa:To
soapenv:mustUnderstand="0">http://localhost:80/gateway/services/DataMaintena
nceSOAPPort</wsa:To><wsa:Action
soapenv:mustUnderstand="0">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSe
quence</wsa:Action><wsa:From
soapenv:mustUnderstand="0"><wsa:Address>http://localhost:9090/axis/services/
RMService</wsa:Address></wsa:From><wsa:ReplyTo
soapenv:mustUnderstand="0"><wsa:Address>http://127.0.0.1:9090/gateway/servic
es/RMService</wsa:Address></wsa:ReplyTo></soapenv:Header><soapenv:Body><wsrm
:CreateSequence><wsrm:AcksTo><wsa:Address>http://schemas.xmlsoap.org/ws/2004
/08/addressing/role/anonymous</wsa:Address></wsrm:AcksTo></wsrm:CreateSequen
ce></soapenv:Body></soapenv:Envelope>

 

RESPONSE:

 

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

X-Powered-By: Servlet 2.4; JBoss-4.0.2 (build: CVSTag=JBoss_4_0_2
date=200505022023)/Tomcat-5.5

Content-Type: text/xml;charset=utf-8

Date: Wed, 03 Aug 2005 20:34:38 GMT

Connection: close

 

<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><soapenv
:Fault><faultcode>Incorrect Message</faultcode><faultstring>No Addressing
Headers Available in this Message</faultstring><detail><ns1:stackTrace
xmlns:ns1="http://xml.apache.org/axis/">No Addressing Headers Available in
this Message

               at
org.apache.sandesha.server.MessageValidator.validate(MessageValidator.java:7
3)

               at
org.apache.sandesha.ws.rm.providers.RMProvider.processMessage(RMProvider.jav
a:86)

               at
org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)

               at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:
32)

               at
org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)

               at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)

               at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)

               at
org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)

               at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)

               at
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

               at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:
327)

               at
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

               at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:252)

               at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:173)

               at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.ja
va:81)

               at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:202)

               at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:173)

               at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:213)

               at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:178)

               at
org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalVal
ve.java:39)

               at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssoci
ationValve.java:153)

               at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:
59)

               at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126
)

               at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105
)

               at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:107)

               at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

               at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)

               at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:744)

               at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.jav
a:527)

               at
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThre
ad.java:112)

               at java.lang.Thread.run(Thread.java:595)

</ns1:stackTrace><ns2:hostname xmlns:ns2="http://xml.apache.org/axis/"> XXXX
</ns2:hostname></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>

 

 

Thanks

 

 

Lakshmi Chaparala

Software Engineer

Intelligent Software Solutions

 

  _____  

From: Jaliya Ekanayake [mailto:jaliya@opensource.lk] 
Sent: Wednesday, August 03, 2005 4:04 AM
To: Lakshmi Chaparala
Cc: sandesha-dev@ws.apache.org
Subject: Re: FW: More on Axis Serialization with Sandesha

 

Hi Lakshmi,

Please see my answeres below.

Thanks,

Jaliya

Lakshmi Chaparala wrote: 

Hi Jaliya,

 

I forgot to send you the tcpmon output of my request. The following is from
TCPMON running with Sandesha:

 

POST /gateway/services/DataMaintenanceSOAPPort HTTP/1.0

Content-Type: text/xml; charset=utf-8

Accept: application/soap+xml, application/dime, multipart/related, text/*

User-Agent: Axis/1.2

Host: 127.0.0.1:80

Cache-Control: no-cache

Pragma: no-cache

SOAPAction:  <http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence>
"http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence"

Content-Length: 1711

 

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv= <http://schemas.xmlsoap.org/soap/envelope/>
"http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa=
<http://schemas.xmlsoap.org/ws/2004/08/addressing>
"http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsrm=
<http://schemas.xmlsoap.org/ws/2005/02/rm>
"http://schemas.xmlsoap.org/ws/2005/02/rm" xmlns:xsd=
<http://www.w3.org/2001/XMLSchema> "http://www.w3.org/2001/XMLSchema"
xmlns:xsi= <http://www.w3.org/2001/XMLSchema-instance>
"http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header>

<wsse:Security xmlns:wsse=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1
.0.xsd>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1
.0.xsd" soapenv:mustUnderstand="1">

<wsse:UsernameToken><wsse:Username>wsuser</wsse:Username><wsse:Password
Type=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-prof
ile-1.0#PasswordDigest>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-prof
ile-1.0#PasswordDigest">l4AA7n02Afbp6840fgWGueW2kEo=</wsse:Password><wsse:No
nce>6FDfHuY+qnKSR9xGXzAIsw==</wsse:Nonce><wsu:Created xmlns:wsu=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd">2005-07-29T19:56:19Z</wsu:Created></wsse:UsernameToken></wsse:Secur
ity><wsa:MessageID
soapenv:mustUnderstand="0">uuid:d2267500-006a-11da-86dc-fc82bc0dd46e</wsa:Me
ssageID><wsa:To
soapenv:mustUnderstand="0">http://localhost:80/gateway/services/DataMaintena
nceSOAPPort</wsa:To><wsa:Action
soapenv:mustUnderstand="0">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSe
quence</wsa:Action><wsa:From soapenv:mustUnderstand="0"><wsa:Address>http://
localhost:9090/axis/services/RMService</wsa:Address></wsa:From><wsa:ReplyTo
soapenv:mustUnderstand="0"><wsa:Address>http://
localhost:9090/axis/services/RMService</wsa:Address></wsa:ReplyTo></soapenv:
Header>

<soapenv:Body><wsrm:CreateSequence><wsrm:AcksTo><wsa:Address>http://localhos
t:9090/axis/services/RMService</wsa:Address></wsrm:AcksTo></wsrm:CreateSeque
nce>

</soapenv:Body>

</soapenv:Envelope>

 

1.	Why does Sandesha create a new SOAPENV:BODY with  CreateSequence
tags and not my original query? Ususually when I run my client I get the
following SOAP request:

Sandesha is an implementation of WS-ReliableMessaging protocol. According to
the spec the first message for any set (sequnce) of messages is the
CreateSequenceRequest message that is used to get a unique ID from the
server. Please see
:http://specs.xmlsoap.org/ws/2005/02/rm/ws-reliablemessaging.pdf
These messages are not for your applications and they are all for the RM
Endpoint in the server side.



1.	 

 

POST /gateway/services/DataMaintenanceSOAPPort HTTP/1.0

Content-Type: text/xml; charset=utf-8

Accept: application/soap+xml, application/dime, multipart/related, text/*

User-Agent: Axis/1.2.1

Host: 127.0.0.1:80

Cache-Control: no-cache

Pragma: no-cache

SOAPAction: "query"

Content-Length: 969

 

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv= <http://schemas.xmlsoap.org/soap/envelope/>
"http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd=
<http://www.w3.org/2001/XMLSchema> "http://www.w3.org/2001/XMLSchema"
xmlns:xsi= <http://www.w3.org/2001/XMLSchema-instance>
"http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Header>

<wsse:Security xmlns:wsse=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1
.0.xsd>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1
.0.xsd" soapenv:mustUnderstand="1">

<wsse:UsernameToken><wsse:Username>wsuser</wsse:Username><wsse:Password
Type=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-prof
ile-1.0#PasswordDigest>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-prof
ile-1.0#PasswordDigest">Q/unQPXGCFNzdMXlvBvtXNpO5T4=</wsse:Password><wsse:No
nce>MNxhscOG+fin/QaEHTf27A==</wsse:Nonce><wsu:Created xmlns:wsu=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd">2005-08-02T21:10:06Z</wsu:Created></wsse:UsernameToken></wsse:Secur
ity></soapenv:Header><soapenv:Body><Query xmlns=
<http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services"><snl>SHOW
Clashes</snl></Query></soapenv:Body></soapenv:Envelope>

 

2.	Why is Sandesha not setting my operation, <snl>SHOW Clashes</snl>
in the body? If Sandesha resets my query, none of my custom serializers and
deserializers would work.

Sandesha is not reseting your query. It will be sent as the second message.
First message would be the CreateSequenceRequest and next you will see your
message.




2.	 

 

Any advice regarding this is appreciated.

 

Thanks

 

 

Lakshmi Chaparala

Software Engineer

Intelligent Software Solutions

 

According to your scenario you are trying to use WS-Security and Sandesha
(WS-RM)  both for your messages. IMHO in the client side, security should be
applied after RM. That is, all the messages should be secured for a
communication including the RM messages (CreateSequenceRequest, Acks and
TerminateSequence etc.)

However since Sandesha is using a separate sender we are using a separate
properties (sandesha.properties) file to get the handler details that should
come after the WS-RM phase. 

Currently we CANOT sepcify any parameters for the handlers that we specify
in the "sandesha.proerties"

Please do the following changes

Check whether you have specify the "ctx.setLastMessage(call);" to inform
that this is the last message.
In the server-config.wsdd

server-config.wsdd:

 

<!-- <service name="DataMaintenanceSOAPPort" provider="java:RPC"
style="document" use="literal"> -->

<service name="DataMaintenanceSOAPPort" provider="handler"> 



  <wsdlFile>DataMaintenanceService.wsdl</wsdlFile>

  <operation name="query" qname="query" returnQName="ns32:DataObjectSet"
returnType="ns32:DataObjectSet"

              soapAction="query" xmlns:ns32=
<http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services">

          <parameter qname="ns32:Query" type="ns32:Query"/>

          <fault class="ipt.tas.gateway.common.GatewayServiceException"
qname="ns32:GatewayServiceException" 

             type="ns32:GatewayServiceException"/>

  </operation>  

  <requestFlow>

   <handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">

    <parameter name="passwordCallbackClass"
value="ipt.tas.gateway.security.PWCallback"/>

    <parameter name="action" value="UsernameToken"/>

   </handler>

  </requestFlow>

  <requestFlow>

     <handler
type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"/>

     <handler
type="java:org.apache.axis.message.addressing.handler.AddressingHandler"/>

  </requestFlow>

  <parameter name="handlerClass"
value="org.apache.sandesha.ws.rm.providers.RMProvider"/>

  <parameter name="allowedMethods" value=" query"/>

  <parameter name="restrictUserAccess" value="true"/>

  <parameter name="typeMappingVersion" value="1.2"/>

  <parameter name="wsdlPortType" value="DataMaintenancePortType"/>

  <parameter name="className"
value="ipt.tas.gateway.service.data_maint.DataMaintenanceSOAPBindingImpl"/>

  <parameter name="wsdlServicePort" value="DataMaintenanceSOAPPort"/>

  <parameter name="wsdlTargetNamespace" value=
<http://www.issinc.com/gateway/services/wsdl>
"http://www.issinc.com/gateway/services/wsdl"/>

  <parameter name="wsdlServiceElement" value="DataMaintenanceService"/>

  <typeMapping
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="" qname="ns47:Query" 

 
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
type="java:ipt.tas.gateway.common.Query"  

                xmlns:ns47= <http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services"/>  

 </service>

If there are any more problems let me know.





 

  _____  

From: Lakshmi Chaparala [mailto:lakshmi.chaparala@issinc.com] 
Sent: Tuesday, August 02, 2005 7:37 AM
To: 'Jaliya Ekanayake'
Subject: RE: Sandesha ERRORS

 

Hi Jaliya,

 

Thanks for the reply. Yes this has been working before I added Sandesha in
my Stub code. If I remove or comment out Sandesha from this code, my JUnit
test passes.

 

My client Stub code has: 

 

        String defaultServerPort = "80";

        String defaultClientPort = "9090";

        String targetURL =
<http://localhost:80/gateway/services/DataMaintenanceSOAPPort>
"http://localhost:80/gateway/services/DataMaintenanceSOAPPort";

        SandeshaContext ctx = new SandeshaContext();

       ctx.setAcksToURL(Constants.WSA.NS_ADDRESSING_ANONYMOUS);

       ctx.setReplyToURL( <http://127.0.0.1:> "http://127.0.0.1:" +
defaultClientPort + 

                                       "/gateway/services/RMService");

 

       org.apache.axis.client.Call _call = createCall();

 

       ctx.initCall(_call, targetURL, "urn:wsrm:query", 

 
org.apache.sandesha.Constants.ClientProperties.IN_OUT);

 

       _call.setOperation(_operations[0]);

       _call.setUseSOAPAction(true);

       _call.setSOAPActionURI("query");

       _call.setEncodingStyle(null);

       _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR,
Boolean.FALSE);

 
_call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS,Boolean.FALSE)
;

 
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);

       _call.setOperationName(new javax.xml.namespace.QName("", "query"));

       setRequestHeaders(_call);

       setAttachments(_call);

       java.lang.Object _resp = _call.invoke(new java.lang.Object[]
{query});

 

client-config.wsdd: 

 

<?xml version="1.0" encoding="UTF-8"?>

<deployment xmlns= <http://xml.apache.org/axis/wsdd/>
"http://xml.apache.org/axis/wsdd/" xmlns:java=
<http://xml.apache.org/axis/wsdd/providers/java>
"http://xml.apache.org/axis/wsdd/providers/java">

 <globalConfiguration>

  <parameter name="adminPassword" value="admin"/>

  <parameter name="enableNamespacePrefixOptimization" value="true"/>

  <parameter name="disablePrettyXML" value="true"/>

  <parameter name="sendMultiRefs" value="true"/>

  <parameter name="sendXsiTypes" value="true"/>

  <parameter name="attachments.implementation"
value="org.apache.axis.attachments.AttachmentsImpl"/>

  <parameter name="sendXMLDeclaration" value="true"/>

   <requestFlow>

     <handler type="java:org.apache.ws.axis.security.WSDoAllSender">

       <parameter name="action" value="UsernameToken"/>

       <parameter name="user" value="wsuser"/>

       <parameter name="passwordType" value="PasswordDigest"/>

       <parameter name="passwordCallbackClass"
value="ipt.tas.gateway.security.PWCallback"/>

     </handler>

   </requestFlow> 

 </globalConfiguration> 

 <handler name="RMSender" type="java:org.apache.sandesha.client.RMSender"/>

  <transport name="java"
pivot="java:org.apache.axis.transport.java.JavaSender"/>

  <transport name="http"
pivot="java:org.apache.axis.transport.http.HTTPSender"/>

  <transport name="local"
pivot="java:org.apache.axis.transport.local.LocalSender"/>

 <transport name="RMTransport" pivot="RMSender"/>

</deployment>

 

and 

server-config.wsdd:

 

<service name="DataMaintenanceSOAPPort" provider="java:RPC" style="document"
use="literal">

  <wsdlFile>DataMaintenanceService.wsdl</wsdlFile>

  <operation name="query" qname="query" returnQName="ns32:DataObjectSet"
returnType="ns32:DataObjectSet"

              soapAction="query" xmlns:ns32=
<http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services">

          <parameter qname="ns32:Query" type="ns32:Query"/>

          <fault class="ipt.tas.gateway.common.GatewayServiceException"
qname="ns32:GatewayServiceException" 

             type="ns32:GatewayServiceException"/>

  </operation>  

  <requestFlow>

   <handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">

    <parameter name="passwordCallbackClass"
value="ipt.tas.gateway.security.PWCallback"/>

    <parameter name="action" value="UsernameToken"/>

   </handler>

  </requestFlow>

  <requestFlow>

     <handler
type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"/>

     <handler
type="java:org.apache.axis.message.addressing.handler.AddressingHandler"/>

  </requestFlow>

  <parameter name="handlerClass"
value="org.apache.sandesha.ws.rm.providers.RMProvider"/>

  <parameter name="allowedMethods" value=" query"/>

  <parameter name="restrictUserAccess" value="true"/>

  <parameter name="typeMappingVersion" value="1.2"/>

  <parameter name="wsdlPortType" value="DataMaintenancePortType"/>

  <parameter name="className"
value="ipt.tas.gateway.service.data_maint.DataMaintenanceSOAPBindingImpl"/>

  <parameter name="wsdlServicePort" value="DataMaintenanceSOAPPort"/>

  <parameter name="wsdlTargetNamespace" value=
<http://www.issinc.com/gateway/services/wsdl>
"http://www.issinc.com/gateway/services/wsdl"/>

  <parameter name="wsdlServiceElement" value="DataMaintenanceService"/>

  <typeMapping
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="" qname="ns47:Query" 

 
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
type="java:ipt.tas.gateway.common.Query"  

                xmlns:ns47= <http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services"/>  

 </service>

 

 

Appreciate your advice.

Thanks

 

Lakshmi Chaparala

Software Engineer

Intelligent Software Solutions

 

-----Original Message-----
From: Jaliya Ekanayake [mailto:jaliya@opensource.lk] 
Sent: Tuesday, August 02, 2005 4:04 AM
To: Lakshmi Chaparala
Subject: Re: Sandesha ERRORS

 

Hi Lakshmi,

 

 

I am sorry for the late reply.

 

Could you please veryfy me you get the complete message path working 

without sandesha  but using only the

WSDoAllSender in your client request flow as you have mentioned? (Need 

to change the client code a bit and the client-config and the server-config)

Sandesha does not handle any serialization stuff and it is done by the 

Axis itself.

 

Thanks,

 

Jaliya

 

 

Lakshmi Chaparala wrote:

 

>Hi Jaliya,

> 

>I still get the following error when I add Sandesha to my Client Stub code:

> 

>ERROR - org.xml.sax.SAXException: SimpleDeserializer encountered a child

>element, which is NOT expected, in something it was trying to deserialize.

> 

>Is there a way to tell Sandesha to use BeanDeserializer and not

>SimpleDeserializer?

> 

> 

>Thanks

> 

>Lakshmi Chaparala

>Software Engineer

>Intelligent Software Solutions

> 

> 

> 

>-----Original Message-----

>From: Jaliya Ekanayake [mailto:jaliya@opensource.lk] 

>Sent: Thursday, July 28, 2005 9:58 PM

>To: Lakshmi Chaparala

>Subject: Re: Sandesha ERRORS

> 

>Hi Lakshmi,

> 

>Yes, this has been fixed in the current code. If you have taken the RC1 

>please take a checkout from  

>http://svn.apache.org/repos/asf/webservices/sandesha/trunk/

> 

>and build Sandesha jar using the maven.

> 

>Or if you can wait till tomorrow and get Sandesha 1.0 :)

>We plan to release it today :)

> 

>Thanks,

> 

>Jaliya

> 

> 

> 

> 

>Lakshmi Chaparala wrote:

> 

>  

> 

>>Hi, 

>> 

>>1.       I have a request flow configured on the server in
server-config.wsdd

>>under my Service called DataMaintenance. 

>> 

>><requestFlow>

>> 

>>   <handler

>>type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"></ha
n

>>    

>> 

>d

>  

> 

>>ler>

>> 

>>   <handler

>>type="java:org.apache.axis.message.addressing.handler.AddressingHandler"><
/

>>    

>> 

>h

>  

> 

>>andler>

>> 

>> </requestFlow>

>> 

>> <parameter name="handlerClass"

>>value="org.apache.sandesha.ws.rm.providers.RMProvider"/>

>> 

>>2.       client-config.wsdd has the following flows: 

>> 

>><?xml version="1.0" encoding="UTF-8"?>

>> 

>><deployment xmlns= <http://xml.apache.org/axis/wsdd/>
"http://xml.apache.org/axis/wsdd/"

>>xmlns:java= <http://xml.apache.org/axis/wsdd/providers/java>
"http://xml.apache.org/axis/wsdd/providers/java">

>> 

>><globalConfiguration>

>> 

>>  <parameter name="defaultSOAPVersion" value="1.2"/>

>> 

>>  <parameter name="disablePrettyXML" value="true"/>

>> 

>>  <parameter name="adminPassword" value="admin"/>

>> 

>>  <parameter name="enableNamespacePrefixOptimization" value="true"/>"

>> 

>>  <parameter name="sendXsiTypes" value="true"/>

>> 

>>  <parameter name="sendMultiRefs" value="true"/>

>> 

>>  <parameter name="sendXMLDeclaration" value="true"/>

>> 

>>  <requestFlow>

>> 

>>    <handler type="java:org.apache.ws.axis.security.WSDoAllSender">

>> 

>>      <parameter name="action" value="UsernameToken"/>

>> 

>>      <parameter name="user" value="wsuser"/>

>> 

>>      <parameter name="passwordType" value="PasswordDigest"/>

>> 

>>      <parameter name="passwordCallbackClass"

>>value="ipt.tas.gateway.security.PWCallback"/>

>> 

>>    </handler>

>> 

>>  </requestFlow> 

>> 

>></globalConfiguration>

>> 

>><handler name="RMSender" type="java:org.apache.sandesha.client.RMSender"/>

>> 

>> <transport name="java"

>>pivot="java:org.apache.axis.transport.java.JavaSender"/>

>> 

>> <transport name="http"

>>pivot="java:org.apache.axis.transport.http.HTTPSender"/>

>> 

>> <transport name="local"

>>pivot="java:org.apache.axis.transport.local.LocalSender"/>

>> 

>><transport name="RMTransport" pivot="RMSender"/>

>> 

>></deployment>

>> 

>>3.       My client stub code has : 

>> 

>>      org.apache.axis.client.Call _call = createCall();

>> 

>>      SandeshaContext ctx = new SandeshaContext();

>> 

>>      ctx.initCall(_call,

>>targetURL,"urn:wsrm:query",org.apache.sandesha.Constants.ClientProperties.
I

>>    

>> 

>N

>  

> 

>>_OUT);

>> 

>>       _call.setOperation(_operations[0]);

>> 

>>       _call.setUseSOAPAction(true);

>> 

>>       _call.setSOAPActionURI("query");

>> 

>>       _call.setEncodingStyle(null);

>> 

>>       _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR,

>>Boolean.FALSE);

>> 

>>       _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS,

>>Boolean.FALSE);

>> 

>> 

>>_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);

>> 

>>       _call.setOperationName(new javax.xml.namespace.QName("", "query"));

>> 

>>       setRequestHeaders(_call);

>> 

>>       setAttachments(_call);

>> 

>>      java.lang.Object _resp = _call.invoke(new

>>    

>> 

>java.lang.Object[]{query});

>  

> 

>> 

>>Sandesha.jar and Addressing.jar are in my classpath, deployed in JBOSS

>>Application server version 4.0.2

>> 

>>4.       Query is defined in my xsd as: 

>> 

>><xsd:element name="Query">

>> 

>>   <xsd:complexType>

>> 

>>     <xsd:sequence>

>> 

>>       <xsd:element name="snl" type="xsd:string"/>

>> 

>>       <xsd:element name="attrs" type="xsd:string" minOccurs="0"

>>maxOccurs="unbounded"/>

>> 

>>     </xsd:sequence>

>> 

>>   </xsd:complexType>

>> 

>>I am using doc/literal style of SOAP message and I get errors using

>>    

>> 

>Sandesha

>  

> 

>>API. When I run my client, I get:

>> 

>> 

>> 

>>-=-=-=-=-=-= Starting testQuery -=-=-=-=-=-=-=-=

>> 

>>Calling query with SNL=SHOW Clashes

>> 

>>INFO - starting up SimpleAxisServer on port 9090

>>(C:\cvshome\gateway\GATEWAY)

>> 

>>ERROR - org.xml.sax.SAXException: SimpleDeserializer encountered a child

>>element, which is NOT expected, in something it was trying to deserialize.

>> 

>>Is this an Axis bug or error in my Sandesha configuration? 

>> 

>>Thanks and appreciate your response regarding this.

>> 

>> 

>> 

>> 

>> 

>>Lakshmi Chaparala

>> 

>>Software Engineer

>> 

>>Intelligent Software Solutions

>> 

 


RE: FW: More on Axis Serialization with Sandesha

Posted by Lakshmi Chaparala <la...@issinc.com>.
Hi Jaliya,

 

I made all the changes that you have suggested. My client stub seemed to
have gone past the serialization errors but now all addressing headers in my
message are missing. Is there something else I need to configure to get
those headers back in to the soap message?

 

Thanks  for your time, for looking into this.

 

 

 My TCPMON request and response are as follows:

 

REQUEST:

 

POST /gateway/services/DataMaintenanceSOAPPort HTTP/1.0

Content-Type: text/xml; charset=utf-8

Accept: application/soap+xml, application/dime, multipart/related, text/*

User-Agent: Axis/1.2.1

Host: 127.0.0.1:80

Cache-Control: no-cache

Pragma: no-cache

SOAPAction: "http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence"

Content-Length: 1721

 

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header>

<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuri
ty-secext-1.0.xsd" soapenv:mustUnderstand="1">

<wsse:UsernameToken><wsse:Username>wsuser</wsse:Username><wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token
-profile-1.0#PasswordDigest">KD+fxqEVwTV59ihZ3c7nlf4qf8w=</wsse:Password><ws
se:Nonce>rFqYzq/9YNHG1gMpyl5omg==</wsse:Nonce><wsu:Created
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurit
y-utility-1.0.xsd">2005-08-03T20:34:38Z</wsu:Created></wsse:UsernameToken></
wsse:Security><wsa:MessageID
soapenv:mustUnderstand="0">uuid:fda883c0-045d-11da-ac5a-935dc4944e2a</wsa:Me
ssageID><wsa:To
soapenv:mustUnderstand="0">http://localhost:80/gateway/services/DataMaintena
nceSOAPPort</wsa:To><wsa:Action
soapenv:mustUnderstand="0">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSe
quence</wsa:Action><wsa:From
soapenv:mustUnderstand="0"><wsa:Address>http://localhost:9090/axis/services/
RMService</wsa:Address></wsa:From><wsa:ReplyTo
soapenv:mustUnderstand="0"><wsa:Address>http://127.0.0.1:9090/gateway/servic
es/RMService</wsa:Address></wsa:ReplyTo></soapenv:Header><soapenv:Body><wsrm
:CreateSequence><wsrm:AcksTo><wsa:Address>http://schemas.xmlsoap.org/ws/2004
/08/addressing/role/anonymous</wsa:Address></wsrm:AcksTo></wsrm:CreateSequen
ce></soapenv:Body></soapenv:Envelope>

 

RESPONSE:

 

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

X-Powered-By: Servlet 2.4; JBoss-4.0.2 (build: CVSTag=JBoss_4_0_2
date=200505022023)/Tomcat-5.5

Content-Type: text/xml;charset=utf-8

Date: Wed, 03 Aug 2005 20:34:38 GMT

Connection: close

 

<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><soapenv
:Fault><faultcode>Incorrect Message</faultcode><faultstring>No Addressing
Headers Available in this Message</faultstring><detail><ns1:stackTrace
xmlns:ns1="http://xml.apache.org/axis/">No Addressing Headers Available in
this Message

               at
org.apache.sandesha.server.MessageValidator.validate(MessageValidator.java:7
3)

               at
org.apache.sandesha.ws.rm.providers.RMProvider.processMessage(RMProvider.jav
a:86)

               at
org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)

               at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:
32)

               at
org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)

               at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)

               at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)

               at
org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)

               at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)

               at
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

               at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:
327)

               at
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

               at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:252)

               at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:173)

               at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.ja
va:81)

               at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:202)

               at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:173)

               at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:213)

               at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:178)

               at
org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalVal
ve.java:39)

               at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssoci
ationValve.java:153)

               at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:
59)

               at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126
)

               at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105
)

               at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:107)

               at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

               at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)

               at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:744)

               at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.jav
a:527)

               at
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThre
ad.java:112)

               at java.lang.Thread.run(Thread.java:595)

</ns1:stackTrace><ns2:hostname xmlns:ns2="http://xml.apache.org/axis/"> XXXX
</ns2:hostname></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>

 

 

Thanks

 

 

Lakshmi Chaparala

Software Engineer

Intelligent Software Solutions

 

  _____  

From: Jaliya Ekanayake [mailto:jaliya@opensource.lk] 
Sent: Wednesday, August 03, 2005 4:04 AM
To: Lakshmi Chaparala
Cc: sandesha-dev@ws.apache.org
Subject: Re: FW: More on Axis Serialization with Sandesha

 

Hi Lakshmi,

Please see my answeres below.

Thanks,

Jaliya

Lakshmi Chaparala wrote: 

Hi Jaliya,

 

I forgot to send you the tcpmon output of my request. The following is from
TCPMON running with Sandesha:

 

POST /gateway/services/DataMaintenanceSOAPPort HTTP/1.0

Content-Type: text/xml; charset=utf-8

Accept: application/soap+xml, application/dime, multipart/related, text/*

User-Agent: Axis/1.2

Host: 127.0.0.1:80

Cache-Control: no-cache

Pragma: no-cache

SOAPAction:  <http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence>
"http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence"

Content-Length: 1711

 

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv= <http://schemas.xmlsoap.org/soap/envelope/>
"http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa=
<http://schemas.xmlsoap.org/ws/2004/08/addressing>
"http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsrm=
<http://schemas.xmlsoap.org/ws/2005/02/rm>
"http://schemas.xmlsoap.org/ws/2005/02/rm" xmlns:xsd=
<http://www.w3.org/2001/XMLSchema> "http://www.w3.org/2001/XMLSchema"
xmlns:xsi= <http://www.w3.org/2001/XMLSchema-instance>
"http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header>

<wsse:Security xmlns:wsse=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1
.0.xsd>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1
.0.xsd" soapenv:mustUnderstand="1">

<wsse:UsernameToken><wsse:Username>wsuser</wsse:Username><wsse:Password
Type=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-prof
ile-1.0#PasswordDigest>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-prof
ile-1.0#PasswordDigest">l4AA7n02Afbp6840fgWGueW2kEo=</wsse:Password><wsse:No
nce>6FDfHuY+qnKSR9xGXzAIsw==</wsse:Nonce><wsu:Created xmlns:wsu=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd">2005-07-29T19:56:19Z</wsu:Created></wsse:UsernameToken></wsse:Secur
ity><wsa:MessageID
soapenv:mustUnderstand="0">uuid:d2267500-006a-11da-86dc-fc82bc0dd46e</wsa:Me
ssageID><wsa:To
soapenv:mustUnderstand="0">http://localhost:80/gateway/services/DataMaintena
nceSOAPPort</wsa:To><wsa:Action
soapenv:mustUnderstand="0">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSe
quence</wsa:Action><wsa:From soapenv:mustUnderstand="0"><wsa:Address>http://
localhost:9090/axis/services/RMService</wsa:Address></wsa:From><wsa:ReplyTo
soapenv:mustUnderstand="0"><wsa:Address>http://
localhost:9090/axis/services/RMService</wsa:Address></wsa:ReplyTo></soapenv:
Header>

<soapenv:Body><wsrm:CreateSequence><wsrm:AcksTo><wsa:Address>http://localhos
t:9090/axis/services/RMService</wsa:Address></wsrm:AcksTo></wsrm:CreateSeque
nce>

</soapenv:Body>

</soapenv:Envelope>

 

1.	Why does Sandesha create a new SOAPENV:BODY with  CreateSequence
tags and not my original query? Ususually when I run my client I get the
following SOAP request:

Sandesha is an implementation of WS-ReliableMessaging protocol. According to
the spec the first message for any set (sequnce) of messages is the
CreateSequenceRequest message that is used to get a unique ID from the
server. Please see
:http://specs.xmlsoap.org/ws/2005/02/rm/ws-reliablemessaging.pdf
These messages are not for your applications and they are all for the RM
Endpoint in the server side.



1.	 

 

POST /gateway/services/DataMaintenanceSOAPPort HTTP/1.0

Content-Type: text/xml; charset=utf-8

Accept: application/soap+xml, application/dime, multipart/related, text/*

User-Agent: Axis/1.2.1

Host: 127.0.0.1:80

Cache-Control: no-cache

Pragma: no-cache

SOAPAction: "query"

Content-Length: 969

 

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv= <http://schemas.xmlsoap.org/soap/envelope/>
"http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd=
<http://www.w3.org/2001/XMLSchema> "http://www.w3.org/2001/XMLSchema"
xmlns:xsi= <http://www.w3.org/2001/XMLSchema-instance>
"http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Header>

<wsse:Security xmlns:wsse=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1
.0.xsd>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1
.0.xsd" soapenv:mustUnderstand="1">

<wsse:UsernameToken><wsse:Username>wsuser</wsse:Username><wsse:Password
Type=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-prof
ile-1.0#PasswordDigest>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-prof
ile-1.0#PasswordDigest">Q/unQPXGCFNzdMXlvBvtXNpO5T4=</wsse:Password><wsse:No
nce>MNxhscOG+fin/QaEHTf27A==</wsse:Nonce><wsu:Created xmlns:wsu=
<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd>
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd">2005-08-02T21:10:06Z</wsu:Created></wsse:UsernameToken></wsse:Secur
ity></soapenv:Header><soapenv:Body><Query xmlns=
<http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services"><snl>SHOW
Clashes</snl></Query></soapenv:Body></soapenv:Envelope>

 

2.	Why is Sandesha not setting my operation, <snl>SHOW Clashes</snl>
in the body? If Sandesha resets my query, none of my custom serializers and
deserializers would work.

Sandesha is not reseting your query. It will be sent as the second message.
First message would be the CreateSequenceRequest and next you will see your
message.




2.	 

 

Any advice regarding this is appreciated.

 

Thanks

 

 

Lakshmi Chaparala

Software Engineer

Intelligent Software Solutions

 

According to your scenario you are trying to use WS-Security and Sandesha
(WS-RM)  both for your messages. IMHO in the client side, security should be
applied after RM. That is, all the messages should be secured for a
communication including the RM messages (CreateSequenceRequest, Acks and
TerminateSequence etc.)

However since Sandesha is using a separate sender we are using a separate
properties (sandesha.properties) file to get the handler details that should
come after the WS-RM phase. 

Currently we CANOT sepcify any parameters for the handlers that we specify
in the "sandesha.proerties"

Please do the following changes

Check whether you have specify the "ctx.setLastMessage(call);" to inform
that this is the last message.
In the server-config.wsdd

server-config.wsdd:

 

<!-- <service name="DataMaintenanceSOAPPort" provider="java:RPC"
style="document" use="literal"> -->

<service name="DataMaintenanceSOAPPort" provider="handler"> 



  <wsdlFile>DataMaintenanceService.wsdl</wsdlFile>

  <operation name="query" qname="query" returnQName="ns32:DataObjectSet"
returnType="ns32:DataObjectSet"

              soapAction="query" xmlns:ns32=
<http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services">

          <parameter qname="ns32:Query" type="ns32:Query"/>

          <fault class="ipt.tas.gateway.common.GatewayServiceException"
qname="ns32:GatewayServiceException" 

             type="ns32:GatewayServiceException"/>

  </operation>  

  <requestFlow>

   <handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">

    <parameter name="passwordCallbackClass"
value="ipt.tas.gateway.security.PWCallback"/>

    <parameter name="action" value="UsernameToken"/>

   </handler>

  </requestFlow>

  <requestFlow>

     <handler
type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"/>

     <handler
type="java:org.apache.axis.message.addressing.handler.AddressingHandler"/>

  </requestFlow>

  <parameter name="handlerClass"
value="org.apache.sandesha.ws.rm.providers.RMProvider"/>

  <parameter name="allowedMethods" value=" query"/>

  <parameter name="restrictUserAccess" value="true"/>

  <parameter name="typeMappingVersion" value="1.2"/>

  <parameter name="wsdlPortType" value="DataMaintenancePortType"/>

  <parameter name="className"
value="ipt.tas.gateway.service.data_maint.DataMaintenanceSOAPBindingImpl"/>

  <parameter name="wsdlServicePort" value="DataMaintenanceSOAPPort"/>

  <parameter name="wsdlTargetNamespace" value=
<http://www.issinc.com/gateway/services/wsdl>
"http://www.issinc.com/gateway/services/wsdl"/>

  <parameter name="wsdlServiceElement" value="DataMaintenanceService"/>

  <typeMapping
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="" qname="ns47:Query" 

 
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
type="java:ipt.tas.gateway.common.Query"  

                xmlns:ns47= <http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services"/>  

 </service>

If there are any more problems let me know.





 

  _____  

From: Lakshmi Chaparala [mailto:lakshmi.chaparala@issinc.com] 
Sent: Tuesday, August 02, 2005 7:37 AM
To: 'Jaliya Ekanayake'
Subject: RE: Sandesha ERRORS

 

Hi Jaliya,

 

Thanks for the reply. Yes this has been working before I added Sandesha in
my Stub code. If I remove or comment out Sandesha from this code, my JUnit
test passes.

 

My client Stub code has: 

 

        String defaultServerPort = "80";

        String defaultClientPort = "9090";

        String targetURL =
<http://localhost:80/gateway/services/DataMaintenanceSOAPPort>
"http://localhost:80/gateway/services/DataMaintenanceSOAPPort";

        SandeshaContext ctx = new SandeshaContext();

       ctx.setAcksToURL(Constants.WSA.NS_ADDRESSING_ANONYMOUS);

       ctx.setReplyToURL( <http://127.0.0.1:> "http://127.0.0.1:" +
defaultClientPort + 

                                       "/gateway/services/RMService");

 

       org.apache.axis.client.Call _call = createCall();

 

       ctx.initCall(_call, targetURL, "urn:wsrm:query", 

 
org.apache.sandesha.Constants.ClientProperties.IN_OUT);

 

       _call.setOperation(_operations[0]);

       _call.setUseSOAPAction(true);

       _call.setSOAPActionURI("query");

       _call.setEncodingStyle(null);

       _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR,
Boolean.FALSE);

 
_call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS,Boolean.FALSE)
;

 
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);

       _call.setOperationName(new javax.xml.namespace.QName("", "query"));

       setRequestHeaders(_call);

       setAttachments(_call);

       java.lang.Object _resp = _call.invoke(new java.lang.Object[]
{query});

 

client-config.wsdd: 

 

<?xml version="1.0" encoding="UTF-8"?>

<deployment xmlns= <http://xml.apache.org/axis/wsdd/>
"http://xml.apache.org/axis/wsdd/" xmlns:java=
<http://xml.apache.org/axis/wsdd/providers/java>
"http://xml.apache.org/axis/wsdd/providers/java">

 <globalConfiguration>

  <parameter name="adminPassword" value="admin"/>

  <parameter name="enableNamespacePrefixOptimization" value="true"/>

  <parameter name="disablePrettyXML" value="true"/>

  <parameter name="sendMultiRefs" value="true"/>

  <parameter name="sendXsiTypes" value="true"/>

  <parameter name="attachments.implementation"
value="org.apache.axis.attachments.AttachmentsImpl"/>

  <parameter name="sendXMLDeclaration" value="true"/>

   <requestFlow>

     <handler type="java:org.apache.ws.axis.security.WSDoAllSender">

       <parameter name="action" value="UsernameToken"/>

       <parameter name="user" value="wsuser"/>

       <parameter name="passwordType" value="PasswordDigest"/>

       <parameter name="passwordCallbackClass"
value="ipt.tas.gateway.security.PWCallback"/>

     </handler>

   </requestFlow> 

 </globalConfiguration> 

 <handler name="RMSender" type="java:org.apache.sandesha.client.RMSender"/>

  <transport name="java"
pivot="java:org.apache.axis.transport.java.JavaSender"/>

  <transport name="http"
pivot="java:org.apache.axis.transport.http.HTTPSender"/>

  <transport name="local"
pivot="java:org.apache.axis.transport.local.LocalSender"/>

 <transport name="RMTransport" pivot="RMSender"/>

</deployment>

 

and 

server-config.wsdd:

 

<service name="DataMaintenanceSOAPPort" provider="java:RPC" style="document"
use="literal">

  <wsdlFile>DataMaintenanceService.wsdl</wsdlFile>

  <operation name="query" qname="query" returnQName="ns32:DataObjectSet"
returnType="ns32:DataObjectSet"

              soapAction="query" xmlns:ns32=
<http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services">

          <parameter qname="ns32:Query" type="ns32:Query"/>

          <fault class="ipt.tas.gateway.common.GatewayServiceException"
qname="ns32:GatewayServiceException" 

             type="ns32:GatewayServiceException"/>

  </operation>  

  <requestFlow>

   <handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">

    <parameter name="passwordCallbackClass"
value="ipt.tas.gateway.security.PWCallback"/>

    <parameter name="action" value="UsernameToken"/>

   </handler>

  </requestFlow>

  <requestFlow>

     <handler
type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"/>

     <handler
type="java:org.apache.axis.message.addressing.handler.AddressingHandler"/>

  </requestFlow>

  <parameter name="handlerClass"
value="org.apache.sandesha.ws.rm.providers.RMProvider"/>

  <parameter name="allowedMethods" value=" query"/>

  <parameter name="restrictUserAccess" value="true"/>

  <parameter name="typeMappingVersion" value="1.2"/>

  <parameter name="wsdlPortType" value="DataMaintenancePortType"/>

  <parameter name="className"
value="ipt.tas.gateway.service.data_maint.DataMaintenanceSOAPBindingImpl"/>

  <parameter name="wsdlServicePort" value="DataMaintenanceSOAPPort"/>

  <parameter name="wsdlTargetNamespace" value=
<http://www.issinc.com/gateway/services/wsdl>
"http://www.issinc.com/gateway/services/wsdl"/>

  <parameter name="wsdlServiceElement" value="DataMaintenanceService"/>

  <typeMapping
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="" qname="ns47:Query" 

 
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
type="java:ipt.tas.gateway.common.Query"  

                xmlns:ns47= <http://www.issinc.com/gateway/services>
"http://www.issinc.com/gateway/services"/>  

 </service>

 

 

Appreciate your advice.

Thanks

 

Lakshmi Chaparala

Software Engineer

Intelligent Software Solutions

 

-----Original Message-----
From: Jaliya Ekanayake [mailto:jaliya@opensource.lk] 
Sent: Tuesday, August 02, 2005 4:04 AM
To: Lakshmi Chaparala
Subject: Re: Sandesha ERRORS

 

Hi Lakshmi,

 

 

I am sorry for the late reply.

 

Could you please veryfy me you get the complete message path working 

without sandesha  but using only the

WSDoAllSender in your client request flow as you have mentioned? (Need 

to change the client code a bit and the client-config and the server-config)

Sandesha does not handle any serialization stuff and it is done by the 

Axis itself.

 

Thanks,

 

Jaliya

 

 

Lakshmi Chaparala wrote:

 

>Hi Jaliya,

> 

>I still get the following error when I add Sandesha to my Client Stub code:

> 

>ERROR - org.xml.sax.SAXException: SimpleDeserializer encountered a child

>element, which is NOT expected, in something it was trying to deserialize.

> 

>Is there a way to tell Sandesha to use BeanDeserializer and not

>SimpleDeserializer?

> 

> 

>Thanks

> 

>Lakshmi Chaparala

>Software Engineer

>Intelligent Software Solutions

> 

> 

> 

>-----Original Message-----

>From: Jaliya Ekanayake [mailto:jaliya@opensource.lk] 

>Sent: Thursday, July 28, 2005 9:58 PM

>To: Lakshmi Chaparala

>Subject: Re: Sandesha ERRORS

> 

>Hi Lakshmi,

> 

>Yes, this has been fixed in the current code. If you have taken the RC1 

>please take a checkout from  

>http://svn.apache.org/repos/asf/webservices/sandesha/trunk/

> 

>and build Sandesha jar using the maven.

> 

>Or if you can wait till tomorrow and get Sandesha 1.0 :)

>We plan to release it today :)

> 

>Thanks,

> 

>Jaliya

> 

> 

> 

> 

>Lakshmi Chaparala wrote:

> 

>  

> 

>>Hi, 

>> 

>>1.       I have a request flow configured on the server in
server-config.wsdd

>>under my Service called DataMaintenance. 

>> 

>><requestFlow>

>> 

>>   <handler

>>type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"></ha
n

>>    

>> 

>d

>  

> 

>>ler>

>> 

>>   <handler

>>type="java:org.apache.axis.message.addressing.handler.AddressingHandler"><
/

>>    

>> 

>h

>  

> 

>>andler>

>> 

>> </requestFlow>

>> 

>> <parameter name="handlerClass"

>>value="org.apache.sandesha.ws.rm.providers.RMProvider"/>

>> 

>>2.       client-config.wsdd has the following flows: 

>> 

>><?xml version="1.0" encoding="UTF-8"?>

>> 

>><deployment xmlns= <http://xml.apache.org/axis/wsdd/>
"http://xml.apache.org/axis/wsdd/"

>>xmlns:java= <http://xml.apache.org/axis/wsdd/providers/java>
"http://xml.apache.org/axis/wsdd/providers/java">

>> 

>><globalConfiguration>

>> 

>>  <parameter name="defaultSOAPVersion" value="1.2"/>

>> 

>>  <parameter name="disablePrettyXML" value="true"/>

>> 

>>  <parameter name="adminPassword" value="admin"/>

>> 

>>  <parameter name="enableNamespacePrefixOptimization" value="true"/>"

>> 

>>  <parameter name="sendXsiTypes" value="true"/>

>> 

>>  <parameter name="sendMultiRefs" value="true"/>

>> 

>>  <parameter name="sendXMLDeclaration" value="true"/>

>> 

>>  <requestFlow>

>> 

>>    <handler type="java:org.apache.ws.axis.security.WSDoAllSender">

>> 

>>      <parameter name="action" value="UsernameToken"/>

>> 

>>      <parameter name="user" value="wsuser"/>

>> 

>>      <parameter name="passwordType" value="PasswordDigest"/>

>> 

>>      <parameter name="passwordCallbackClass"

>>value="ipt.tas.gateway.security.PWCallback"/>

>> 

>>    </handler>

>> 

>>  </requestFlow> 

>> 

>></globalConfiguration>

>> 

>><handler name="RMSender" type="java:org.apache.sandesha.client.RMSender"/>

>> 

>> <transport name="java"

>>pivot="java:org.apache.axis.transport.java.JavaSender"/>

>> 

>> <transport name="http"

>>pivot="java:org.apache.axis.transport.http.HTTPSender"/>

>> 

>> <transport name="local"

>>pivot="java:org.apache.axis.transport.local.LocalSender"/>

>> 

>><transport name="RMTransport" pivot="RMSender"/>

>> 

>></deployment>

>> 

>>3.       My client stub code has : 

>> 

>>      org.apache.axis.client.Call _call = createCall();

>> 

>>      SandeshaContext ctx = new SandeshaContext();

>> 

>>      ctx.initCall(_call,

>>targetURL,"urn:wsrm:query",org.apache.sandesha.Constants.ClientProperties.
I

>>    

>> 

>N

>  

> 

>>_OUT);

>> 

>>       _call.setOperation(_operations[0]);

>> 

>>       _call.setUseSOAPAction(true);

>> 

>>       _call.setSOAPActionURI("query");

>> 

>>       _call.setEncodingStyle(null);

>> 

>>       _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR,

>>Boolean.FALSE);

>> 

>>       _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS,

>>Boolean.FALSE);

>> 

>> 

>>_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);

>> 

>>       _call.setOperationName(new javax.xml.namespace.QName("", "query"));

>> 

>>       setRequestHeaders(_call);

>> 

>>       setAttachments(_call);

>> 

>>      java.lang.Object _resp = _call.invoke(new

>>    

>> 

>java.lang.Object[]{query});

>  

> 

>> 

>>Sandesha.jar and Addressing.jar are in my classpath, deployed in JBOSS

>>Application server version 4.0.2

>> 

>>4.       Query is defined in my xsd as: 

>> 

>><xsd:element name="Query">

>> 

>>   <xsd:complexType>

>> 

>>     <xsd:sequence>

>> 

>>       <xsd:element name="snl" type="xsd:string"/>

>> 

>>       <xsd:element name="attrs" type="xsd:string" minOccurs="0"

>>maxOccurs="unbounded"/>

>> 

>>     </xsd:sequence>

>> 

>>   </xsd:complexType>

>> 

>>I am using doc/literal style of SOAP message and I get errors using

>>    

>> 

>Sandesha

>  

> 

>>API. When I run my client, I get:

>> 

>> 

>> 

>>-=-=-=-=-=-= Starting testQuery -=-=-=-=-=-=-=-=

>> 

>>Calling query with SNL=SHOW Clashes

>> 

>>INFO - starting up SimpleAxisServer on port 9090

>>(C:\cvshome\gateway\GATEWAY)

>> 

>>ERROR - org.xml.sax.SAXException: SimpleDeserializer encountered a child

>>element, which is NOT expected, in something it was trying to deserialize.

>> 

>>Is this an Axis bug or error in my Sandesha configuration? 

>> 

>>Thanks and appreciate your response regarding this.

>> 

>> 

>> 

>> 

>> 

>>Lakshmi Chaparala

>> 

>>Software Engineer

>> 

>>Intelligent Software Solutions

>>