But from spec, it should be. And if i run the application on axis2, it returns 202 http code directly.
On Fri, Oct 26, 2012 at 4:48 PM, Aki Yoshida <[email protected]> wrote: > 2012/10/26 viola lu <[email protected]>: > > I saw changes in jira https://issues.apache.org/jira/browse/CXF-4182, > and i > > tried this property, it worked. But from > > Jaxws spec 5.1.1 Invocation > > A Provider based service instance’s invoke method is called for each > > message received for the service. > > When an invoke method returns null, it is considered that no response > needs > > to be sent by service > > > > i think it's better to automatically switch to oneway and return 202 as > Aki > > Yoshida mentioned . I can update JAXWSMethodInvoker to make this happen. > > Your comments? > > Hi Viola, > > We could have chosen the default value to be true and made this > behavior automatically enabled. But we were concerned about changing > the existing behavior and hence, opted for introducing an endpoint > option to explicitly enable this behavior. I don't know if there is > really a need to change its default value now unless Jaxws TCK or > something really requires this change. > > Regards, aki > > > > > > On Fri, Oct 26, 2012 at 10:06 AM, viola lu <[email protected]> wrote: > > > >> i am using cxf 2.6.2, does it support > jaxws.provider.interpretNullAsOneway > >> property? > >> > >> > >> On Thu, Oct 25, 2012 at 9:20 PM, Andrei Shakirin <[email protected] > >wrote: > >> > >>> In earlier CXF versions is possible to specify it explicitly via > endpoint > >>> property "jaxws.provider.interpretNullAsOneway": > >>> > >>> <bean id="BooleanTrue" class="java.lang.Boolean"> > >>> <constructor-arg index="0" value="true"/> > >>> </bean> > >>> > >>> <jaxws:endpoint xmlns:customer=" > >>> http://customerservice.example.com/" > >>> id="CustomerServiceHTTP" address=" > >>> http://xxx.yyy.com/service/customservice" > >>> > >>> implementor="com.example.customerservice.server.CustomerServiceImpl"> > >>> <jaxws:properties> > >>> <entry > >>> key="jaxws.provider.interpretNullAsOneway" value-ref="BooleanTrue" /> > >>> </jaxws:properties> > >>> </jaxws:endpoint> > >>> > >>> Andrei. > >>> > >>> -----Original Message----- > >>> From: Aki Yoshida [mailto:[email protected]] > >>> Sent: Donnerstag, 25. Oktober 2012 14:54 > >>> To: [email protected] > >>> Cc: [email protected] > >>> Subject: Re: Get a null pointer if provider returns null response in > >>> payload message mode. > >>> > >>> hi, > >>> Which version of CXF are you using? > >>> I thought it should automatically switch to a pseudo oneway mode and > >>> return an empty http 202 response and this should be handled witout > >>> throwing an NPE. > >>> regards, aki > >>> p.s. moved this to users@cxf > >>> > >>> > >>> 2012/10/25 viola lu <[email protected]>: > >>> > Hi, Dev: > >>> > > >>> > I wrote a sample DOMSource payload provider as below: > >>> > > >>> > @WebServiceProvider() > >>> > public class GreeterDOMSourcePayloadProvider implements > >>> > Provider<DOMSource> { > >>> > > >>> > public GreeterDOMSourcePayloadProvider() { > >>> > //Complete > >>> > } > >>> > > >>> > public DOMSource invoke(DOMSource request) { > >>> > DOMSource response = new DOMSource(); > >>> > return null; > >>> > } > >>> > } > >>> > > >>> > and run client against it: > >>> > > >>> > QName serviceName3 = new > >>> > QName("http://apache.org/hello_world_soap_http", > >>> > "SOAPService3"); > >>> > QName portName3 = new > >>> > QName("http://apache.org/hello_world_soap_http", > >>> > "SoapPort3"); > >>> > > >>> > SOAPService3 service3 = new SOAPService3(wsdlURL, > serviceName3); > >>> > InputStream is3 = > >>> > Client.class.getResourceAsStream("GreetMeDocLiteralReq3.xml"); > >>> > if (is3 == null) { > >>> > System.err.println("Failed to create input stream from > file > >>> " > >>> > + "GreetMeDocLiteralReq3.xml, please > >>> check"); > >>> > System.exit(-1); > >>> > } > >>> > > >>> > SOAPMessage soapReq3 = > >>> > MessageFactory.newInstance().createMessage(null, is3); > >>> > DOMSource domReqPayload = new > >>> > DOMSource(soapReq3.getSOAPBody().extractContentAsDocument()); > >>> > > >>> > Dispatch<DOMSource> dispDOMSrcPayload = > >>> > service3.createDispatch(portName3, > >>> > > >>> > DOMSource.class, Mode.PAYLOAD); > >>> > System.out.println("Invoking server through Dispatch > interface > >>> > using DOMSource in PAYLOAD Mode"); > >>> > DOMSource domRespPayload = > >>> > dispDOMSrcPayload.invoke(domReqPayload); > >>> > > >>> > > >>> > but got an null pointer exception in BareOutputInterceptor. > >>> > > >>> > CXF doesn't support null return response in payload mode? I tried it > >>> > in message mode, it returns an empty <soap-env:body></soap-env:body>, > >>> > but not in payload mode. > >>> > > >>> > I think it should keep same in both mode. Is this a defect of cxf? > >>> > > >>> > You can reproduce it by reusing cxf sample : jaxws_dispatch_provider > >>> > > >>> > Appreciate your comments. > >>> > -- > >>> > viola > >>> > > >>> > Apache Geronimo > >>> > >> > >> > >> > >> -- > >> viola > >> > >> Apache Geronimo > >> > >> > > > > > > -- > > viola > > > > Apache Geronimo > -- viola Apache Geronimo
