https://issues.apache.org/jira/browse/CXF-4611
Can somebody help review it? I already build it against cxf trunk, no failure. Thanks in advance! On Thu, Nov 1, 2012 at 2:04 PM, viola lu <[email protected]> wrote: > Okay, i can open a jira and provide a fix if no objection. > > > On Thu, Nov 1, 2012 at 6:58 AM, Aki Yoshida <[email protected]> wrote: > >> Okay. >> In that case, maybe we could change the default to true in trunk now >> and run the TCK tests with that code to see if there is some issue. >> If there is no issue, we can put the change in 2.7.1. In this way, we >> won't forget about it. If this change is to be made, I think the >> earlier, the better. >> >> regards, aki >> >> 2012/10/31 Glen Mazza <[email protected]>: >> > Unsure of how much a spec issue this actually is, but I would say >> adherence >> > to the spec (whether or not trapped by the TCK) is more important than >> > backwards compatibility, to avoid competitors claiming that we're not >> really >> > spec-compliant. Perhaps this change can be made in CXF 2.8.0. >> > >> > Glen >> > >> > >> > On 10/30/2012 10:24 PM, viola lu wrote: >> >> >> >> 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 >> >> >> >> >> >> >> > >> > >> > -- >> > Glen Mazza >> > Talend Community Coders - coders.talend.com >> > blog: www.jroller.com/gmazza >> > >> > > > > -- > viola > > Apache Geronimo > > -- viola Apache Geronimo
