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

Reply via email to