cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: [jira] Created: (CXF-2378) Capturing SOAP body passed from SSRS in CXF method as a parameter
Date Thu, 15 Oct 2009 19:32:39 GMT

Just realized you responded to the jira email not adding a comment to the jira 
directly....

In anycase,

<query xmlns="http://dataaccessservice.my.company.com">
   <dql>getdocbaselist</dql>
....

Is still invalid according to your schema.    Your schema states:
elementFormDefault="unqualified"
but the above message sets the default namespace to dql ends up as a qualified 
element.   

The message should be either:
<ns1:query xmlns:ns1="http://dataaccessservice.my.company.com">
   <dql>getdocbaselist</dql>
....

or 

<query xmlns="http://dataaccessservice.my.company.com">
   <dql xmlns="">getdocbaselist</dql>
....


In anycase, if you update to CXF 2.2.4, I think JAXB will now generate an 
error in your case that would explain that the incoming message has unexpected 
elements.

Dan



On Wed October 14 2009 3:34:38 pm banks21 wrote:
> Thanks Daniel for your reply I was sidetracked and had to leave this issue
> now I am trying to get this thing resolved. I am just not able to get the
> values passed from the SOAP message into the web service method. The method
> parameters always get null.
> 
> I just want to get the soap body in the method so that I can parse the xml
> and get all the parameter values.
> 
> Here is the SOAP header and related info passed from SSRS to the webservice
> 
> ----------------------------
> 
> Encoding: UTF-8
> 
> Headers: {expect=[100-continue], content-type=[text/xml],
> connection=[Keep-Alive], host=[127.0.0.1:9082],
> soapaction=[http://localhost:9080/axis2/services/DataAccessService/query],
> content-length=[328]}
> 
> Messages:
> 
> Message:
> 
> 
> 
> Payload: <?xml version="1.0" encoding="utf-8"?>
> 
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> 
>   <soap:Body>
> 
>     <query xmlns="http://dataaccessservice.my.company.com">
> 
>       <dql>getdocbaselist</dql>
> 
>       <group>1</group>
> 
>       <group_size>0</group_size>
> 
>     </query>
> 
>   </soap:Body>
> 
> </soap:Envelope>
> 
> --------------------------------------
> 
> com.company.my.dataaccessservice.internal.Request@9ab0
> 
> dql null
> 
> sGroup null
> 
> sGroupSize null
> 
> Oct 14, 2009 10:43:12 AM
> com.company.my.dataaccessservice.DataAccessSoapInternalImpl query
> 
> INFO: Executing operation query
> 
> Oct 14, 2009 10:43:12 AM
> org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
> 
> INFO: Outbound Message
> 
> ---------------------------
> 
> Encoding: UTF-8
> 
> Headers: {}
> 
> Messages:
> 
> Payload: <soap:Envelope
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body></soap:Bo
> dy></soap:Envelope>
> 
> I am using WSL first approach and here is the wsdl i used to generate the
> code.
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions name="DataAccessSoapService"
>                  
>  targetNamespace="http://dataaccessservice.my.company.com/"
>  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>                   xmlns:tns="http://dataaccessservice.my.company.com/"
>                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>                   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> 
> xmlns:cxf="http://cxf.apache.org/transports/http/configuration">
>   <wsdl:types>
> 		<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:tns="http://dataaccessservice.my.company.com/"
> attributeFormDefault="unqualified" elementFormDefault="unqualified"
> targetNamespace="http://dataaccessservice.my.company.com/">
> 
> 		 <xs:element name="request">
>                <xs:complexType>
>                     <xs:sequence>
>                         <xs:element name="dql" type="xs:string"
> minOccurs="1" maxOccurs="1" />
>                         <xs:element name="group" type="xs:string"
> minOccurs="1" maxOccurs="1" />
>                         <xs:element name="group_size" type="xs:string"
> minOccurs="1" maxOccurs="1" />
>                     </xs:sequence>
>                 </xs:complexType>
>         </xs:element>
>         <xs:element name="response">
>            <xs:complexType>
>                     <xs:sequence>
>                         <xs:element name="Response" type="xs:string"
> maxOccurs="1" minOccurs="1"/>
>                     </xs:sequence>
>                 </xs:complexType>
>         </xs:element>
> 
> 
>         </xs:schema>
>   </wsdl:types>
> 
>   <wsdl:message name="queryRequest">
>     <wsdl:part name="request" element="tns:request"></wsdl:part>
>   </wsdl:message>
>    <wsdl:message name="queryResponse">
>      <wsdl:part name="response" element="tns:response"></wsdl:part>
>    </wsdl:message>
> 
>    <wsdl:portType name="DataAccessSoapInternal">
>     <wsdl:operation name="query">
>       <wsdl:input name="queryRequest" message="tns:queryRequest">
>       </wsdl:input>
>       <wsdl:output name="queryResponse" message="tns:queryResponse">
>       </wsdl:output>
>     </wsdl:operation>
>   </wsdl:portType>
> 
>   <wsdl:binding name="DataAccessSoapServiceSoapBinding"
> type="tns:DataAccessSoapInternal">
>     <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>     <wsdl:operation name="query">
>       <soap:operation soapAction="" style="document"/>
>       <wsdl:input name="queryRequest">
>         <soap:body use="literal"/>
>       </wsdl:input>
>       <wsdl:output name="queryResponse">
>         <soap:body use="literal"/>
>       </wsdl:output>
>     </wsdl:operation>
>   </wsdl:binding>
> 
>   <wsdl:service name="DataAccessSoapService">
>     <wsdl:port name="DataAccessSoapServicePort"
> binding="tns:DataAccessSoapServiceSoapBinding">
>       <soap:address
> location="http://localhost:9082/DataAccessSoapServicePort"/>
>       <cxf:client AllowChunking="false"/>
>     </wsdl:port>
>   </wsdl:service>
> 
> </wsdl:definitions>
> 
> Code for the Implementation class is
> 
> @javax.jws.WebService(name = "DataAccessSoapInternal",
>                       serviceName = "DataAccessSoapService",
>                       portName = "DataAccessSoapServicePort",
>                       targetNamespace =
> "http://dataaccessservice.my.company.com/",
>                       wsdlLocation =
> "file:/d:/source/infoworks/6.05/services/dataaccessservice/wsdl/DataAccess.
> wsdl", endpointInterface =
> "com.company.my.dataaccessservice.DataAccessSoapInternal")
> 
> public class DataAccessSoapInternalImpl implements DataAccessSoapInternal {
> 
>     private static final Logger LOG =
> Logger.getLogger(DataAccessSoapInternalImpl.class.getName());
> 
>     /* (non-Javadoc)
>      * @see
> com.bechtel.iw.dataaccessservice.internal.DataAccessSoapInternal#query(com.
> company.my.dataaccessservice.internal.Request request )*
>      */
>     public com.company.my.dataaccessservice.internal.Response query(Request
> request) {
>         LOG.info("Executing operation query");
>         System.out.println(request);
> 
>         String sDql = request.getDql();
>         String sGroup = request.getGroup();
>         String sGroupSize = request.getGroupSize();
> 
>         System.out.println("dql " + sDql );
>         System.out.println("sGroup " + sGroup );
>         System.out.println("sGroupSize " + sGroupSize );
> 
> 
>         try {
>             com.company.my.dataaccessservice.internal.Response _return =
> null;
>             return _return;
>         } catch (Exception ex) {
>             ex.printStackTrace();
>             throw new RuntimeException(ex);
>         }
>     }
> 
> }
> 
> 
> Thanks.
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog

Mime
View raw message