On Wednesday 17 March 2010 12:11:56 pm 0vermind wrote:
> found the bug...or is this a feature of CXF?
> 
> in the wsdl i have:
> <xs:element minOccurs="0" name="process_name" nillable="true"
> type="xs:string"/>
> 
> if i leave nillable="true" out, i can send a request without the element.
> i formerly used jax-ws from sun, which accepted the wsdl with both
> attributes present.
> so again, dan: bug or feature?

Bug.  And testing a fix now.

Dan


> 0vermind wrote:
> > Hi there,
> > i've got a wsdl (see below), with the minoccurs=0 attribute in the
> > request parameter set.
> > I have generated the java classes with cxf from eclipse and deployed the
> > service on tomcat 5.5.
> > The WS works correctly if I send the minoccurs-element in the request.
> > If I leave it out completely i get the following error:
> > 
> > 
> > 
> > 17.03.2010 13:53:30 org.apache.cxf.interceptor.LoggingInInterceptor
> > logging
> > INFO: Inbound Message
> > ----------------------------
> > ID: 2
> > Address: /test3/services/MDEStatusServiceSoap
> > Encoding: UTF-8
> > Content-Type: text/xml;charset=UTF-8
> > Headers: {content-type=[text/xml;charset=UTF-8], host=[localhost:8083],
> > Content-Length=[271], SOAPAction=[""], user-agent=[Jakarta
> > Commons-HttpClient/3.1], Content-Type=[text/xml;charset=UTF-8]}
> > 
> > Payload: <soapenv:Envelope
> > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> > xmlns:mde="http://mde_stats.webservices.lbbw.de/";>
> > 
> >    <soapenv:Header/>
> >    <soapenv:Body>
> >    
> >       <mde:GetMDEStatus>
> >       
> >       </mde:GetMDEStatus>
> >    
> >    </soapenv:Body>
> > 
> > </soapenv:Envelope>
> > 
> > 
> > --------------------------------------
> > 17.03.2010 13:53:30 org.apache.cxf.phase.PhaseInterceptorChain
> > doDefaultLogging
> > WARNUNG: Interceptor for
> > {http://mde_stats.webservices.lbbw.de/}MDEStatusService#{http://mde_stats
> > .webservices.lbbw.de/}GetMDEStatus has thrown exception, unwinding now
> > org.apache.cxf.interceptor.Fault
> > 
> >     at
> > 
> > org.apache.cxf.jaxws.interceptors.WrapperClassInInterceptor.handleMessage
> > (WrapperClassInInterceptor.java:168)
> > 
> >     at
> > 
> > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> > ain.java:243)
> > 
> >     at
> > 
> > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio
> > nObserver.java:109)
> > 
> >     at
> > 
> > org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestina
> > tion.java:98)
> > 
> >     at
> > 
> > org.apache.cxf.transport.servlet.ServletController.invokeDestination(Serv
> > letController.java:406)
> > 
> >     at
> > 
> > org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll
> > er.java:178)
> > 
> >     at
> > 
> > org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSer
> > vlet.java:142)
> > 
> >     at
> > 
> > org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(Abstra
> > ctHTTPServlet.java:179)
> > 
> >     at
> > 
> > org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPS
> > ervlet.java:103)
> > 
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
> >     at
> > 
> > org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTP
> > Servlet.java:159)
> > 
> >     at
> > 
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> > ionFilterChain.java:252)
> > 
> >     at
> > 
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> > rChain.java:173)
> > 
> >     at
> > 
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
> > .java:213)
> > 
> >     at
> > 
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
> > .java:178)
> > 
> >     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.j
> > ava:107)
> > 
> >     at
> > 
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:14
> > 8)
> > 
> >     at
> > 
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869
> > )
> > 
> >     at
> > 
> > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proce
> > ssConnection(Http11BaseProtocol.java:664)
> > 
> >     at
> > 
> > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.
> > java:527)
> > 
> >     at
> > 
> > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowe
> > rWorkerThread.java:80)
> > 
> >     at
> > 
> > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.
> > java:684)
> > 
> >     at java.lang.Thread.run(Unknown Source)
> > 
> > Caused by: java.lang.NullPointerException
> > 
> >     at
> > 
> > de.lbbw.webservices.mde_stats.GetMDEStatus_WrapperTypeHelper1.getWrapperP
> > arts(Unknown Source)
> > 
> >     at
> > 
> > org.apache.cxf.jaxws.interceptors.WrapperClassInInterceptor.handleMessage
> > (WrapperClassInInterceptor.java:135)
> > 
> >     ... 24 more
> > 
> > 17.03.2010 13:53:30
> > org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
> > 
> > 
> > 
> > INFO: Outbound Message
> > ---------------------------
> > ID: 2
> > Response-Code: 500
> > Encoding: UTF-8
> > Content-Type: text/xml
> > Headers: {}
> > Payload: <soap:Envelope
> > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";><soap:Body><soap:F
> > ault><faultcode>soap:Server</faultcode><faultstring>Fault occurred while
> > processing.</faultstring></soap:Fault></soap:Body></soap:Envelope>
> > 
> > 
> > 
> > 
> > The wsdl is this (i think any HelloWorld with minoccurs=0 should do):
> > 
> > <?xml version="1.0" encoding="UTF-8"?>
> > <wsdl:definitions targetNamespace="http://mde_stats.webservices.lbbw.de/";
> > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
> > xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/";
> > xmlns:s="http://www.w3.org/2001/XMLSchema";
> > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> > xmlns:tns="http://mde_stats.webservices.lbbw.de/";
> > xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
> > xmlns:xs="http://www.w3.org/2001/XMLSchema";
> > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> > xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
> > xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/";>
> > 
> >   <wsdl:types>
> >   
> >     <xs:schema elementFormDefault="qualified"
> > 
> > targetNamespace="http://mde_stats.webservices.lbbw.de/";>
> > 
> >             <xs:element name="GetMDEStatus">
> >             
> >                 <xs:complexType>
> >                 
> >                     <xs:sequence>
> >                     
> >                         <xs:element minOccurs="0" name="process_name"
> > 
> > nillable="true" type="xs:string"/>
> > 
> >                     </xs:sequence>
> >                 
> >                 </xs:complexType>
> >             
> >             </xs:element>
> >             <xs:element name="GetMDEStatusResponse">
> >             
> >                 <xs:complexType>
> >                 
> >                     <xs:sequence>
> >                     
> >                         <xs:element maxOccurs="1" minOccurs="0"
> > 
> > name="process_result" type="xs:string"/>
> > 
> >                     </xs:sequence>
> >                 
> >                 </xs:complexType>
> >             
> >             </xs:element>
> >         
> >         </xs:schema>
> >   
> >   </wsdl:types>
> >   <wsdl:message name="GetMDEStatusSoapIn">
> >   
> >     <wsdl:part name="parameters" element="tns:GetMDEStatus">
> >     </wsdl:part>
> >   
> >   </wsdl:message>
> >   <wsdl:message name="GetMDEStatusSoapOut">
> >   
> >     <wsdl:part name="parameters" element="tns:GetMDEStatusResponse">
> >     </wsdl:part>
> >   
> >   </wsdl:message>
> >   <wsdl:portType name="MDEStatusServiceSoap">
> >   
> >     <wsdl:operation name="GetMDEStatus">
> >     
> >       <wsdl:input message="tns:GetMDEStatusSoapIn">
> >     
> >     </wsdl:input>
> >     
> >       <wsdl:output message="tns:GetMDEStatusSoapOut">
> >     
> >     </wsdl:output>
> >     </wsdl:operation>
> >   
> >   </wsdl:portType>
> >   <wsdl:binding name="MDEStatusServiceSoap"
> > 
> > type="tns:MDEStatusServiceSoap">
> > 
> >     <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
> >     <wsdl:operation name="GetMDEStatus">
> >     
> >       <soap:operation soapAction=""/>
> >       <wsdl:input>
> >       
> >         <soap:body use="literal"/>
> >       
> >       </wsdl:input>
> >       <wsdl:output>
> >       
> >         <soap:body use="literal"/>
> >       
> >       </wsdl:output>
> >     
> >     </wsdl:operation>
> >   
> >   </wsdl:binding>
> >   <wsdl:service name="MDEStatusService">
> >   
> >     <wsdl:port name="MDEStatusServiceSoap"
> > 
> > binding="tns:MDEStatusServiceSoap">
> > 
> >       <soap:address
> > 
> > location="http://localhost:8083/test/services/MDEStatusServiceSoap"/>
> > 
> >     </wsdl:port>
> >   
> >   </wsdl:service>
> > 
> > </wsdl:definitions>

-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog

Reply via email to