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
