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.requ...@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 [email protected] http://www.dankulp.com/blog
