cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From viola lu <viola...@gmail.com>
Subject Re: Get a null pointer if provider returns null response in payload message mode.
Date Thu, 01 Nov 2012 06:04:51 GMT
Okay, i can open a jira and provide a fix if no objection.

On Thu, Nov 1, 2012 at 6:58 AM, Aki Yoshida <elakito@gmail.com> 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 <gmazza@talend.com>:
> > 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 <elakito@gmail.com> wrote:
> >>
> >>> 2012/10/26 viola lu <viola.lu@gmail.com>:
> >>>>
> >>>> 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 <viola.lu@gmail.com>
> 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 <
> ashakirin@talend.com
> >>>>
> >>>> 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:elakito@gmail.com]
> >>>>>> Sent: Donnerstag, 25. Oktober 2012 14:54
> >>>>>> To: users@cxf.apache.org
> >>>>>> Cc: viola.lu@gmail.com
> >>>>>> 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 <viola.lu@gmail.com>:
> >>>>>>>
> >>>>>>> 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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message