Ok, the bug is submitted with the problematic WSDL attached.  CXF-993.  Back
to staring at my SSL problem and hoping it will somehow fix itself.

On 9/11/07, James Mao <[EMAIL PROTECTED]> wrote:
>
> Great, That's definitely helpful.
>
> Thanks Ryan,
>
> James
>
>
> > Sure, I'll see if I can somehow get my test case working that fails,
> though
> > maybe it doesn't fail and the bug with the interceptor that I mentioned
> > earlier is causing it to fail no matter how I run wsdl2java.  I'll see
> if I
> > can finish getting a small test case.
> >
> >
> > On 9/11/07, James Mao <[EMAIL PROTECTED]> wrote:
> >
> >> Hi Ryan,
> >>
> >>
> >>> I was able to get this to work now with my scaled down test wsdl, but
> >>>
> >> not
> >>
> >>> the full wsdl that I need it to work with, I'll do my best to help you
> >>>
> >> with
> >>
> >>> what I know about this.
> >>>
> >>> I did notice your thread that sounded familiar.  Apparently if you add
> >>>
> >> the
> >>
> >>> -exsh true parameter to wsdl2java, you'll end up with an extra
> parameter
> >>>
> >> in
> >>
> >>> your method signature of your port class implementation.  This extra
> >>> parameter is the header specified in your wsdl.  If you don't add the
> >>>
> >> exsh,
> >>
> >>> you won't get the parameter and end up with an IndexOutOfBounds error
> >>> because cxf is expecting the header.  I'm not sure why cxf would
> assume
> >>>
> >> you
> >>
> >>> are including the header if you never generated your classes to accept
> >>>
> >> one.
> >>
> >> If exsh not turned on, then there'll not generate the extra header
> >> parameter, and it should not fail the runtime,
> >> otherwise there's a bug in the runtime. the header parameter is
> optional,
> >>
> >> I remember that i fixed this in both the tools and runtime,
> >> but maybe there's one case that i didn't cover, so, do you mind send
> >> your case (simplified) which i can reproduce,
> >> If you can file a jira, that will be great.
> >>
> >> Regards,
> >> James
> >>
> >>
> >>
> >>
> >>> I know my classes weren't setting the header because when I did a find
> >>> usages on my AuthCredentials class, which is put in the header, it
> >>>
> >> wasn't
> >>
> >>> used anywhere.  Actually the generated client code, didn't even
> actually
> >>> make calls to invoke the webservice.  It would just create a response
> >>>
> >> object
> >>
> >>> set to null and return it, and that was it.  So the generated client
> in
> >>>
> >> my
> >>
> >>> opinion was useless anyhow.
> >>>
> >>> On 9/11/07, Gamble, Wesley (WG10) <[EMAIL PROTECTED]> wrote:
> >>>
> >>>
> >>>> Ryan,
> >>>>
> >>>> "All I
> >>>> get currently is an IndexOutOfBoundsException when CXF tries to
> create
> >>>> the
> >>>> header of the SOAP message to send,"
> >>>>
> >>>> sounds suspiciously like my problem (thread: "Can't get at SOAP error
> >>>> from Web service...").  I'm getting an index out of bounds exception
> as
> >>>> well on the header processing.
> >>>>
> >>>> What is the -exsh flag on wsdl2java supposed to do for you?  What
> does
> >>>> "Enables or disables processing of extended soap header message
> >>>> binding." mean?  How would I know the difference between a regular
> and
> >>>> an extended soap header message?
> >>>>
> >>>> How do you know that "the generated client classes do NOT set the
> >>>>
> >> header
> >>
> >>>> that is specified in the binding"?
> >>>>
> >>>> Wes
> >>>>
> >>>> -----Original Message-----
> >>>> From: Ryan Moquin [mailto:[EMAIL PROTECTED]
> >>>> Sent: Tuesday, September 11, 2007 9:36 AM
> >>>> To: [email protected]
> >>>> Subject: Adding headers to soap request
> >>>>
> >>>> I'm writing this as a new message, but I'm hoping that it's answer
> will
> >>>> solve my other issue I'm writing about.  I think I'm having having
> >>>> trouble
> >>>> understanding how to add a header to my request using cxf.  In short,
> I
> >>>> have
> >>>> a WSDL that defines this element:
> >>>>
> >>>> <s:element name="AuthCredentials" type="tns:AuthCredentials"/>
> >>>>       <s:complexType name="AuthCredentials">
> >>>>         <s:sequence>
> >>>>           <s:element minOccurs="0" maxOccurs="1" name="username"
> >>>> type="s:string"/>
> >>>>           <s:element minOccurs="0" maxOccurs="1" name="password"
> >>>> type="s:string"/>
> >>>>         </s:sequence>
> >>>>       </s:complexType>
> >>>>
> >>>> and then defines a binding that uses it:
> >>>>
> >>>> <wsdl:operation name="sendNotification">
> >>>>       <soap:operation
> >>>> soapAction="urn://testnotification/sendNotification"
> >>>> style="document"/>
> >>>>       <wsdl:input>
> >>>>         <soap:body use="literal"/>
> >>>>         <soap:header message="tns:sendNotificationAuthCredentials"
> >>>> part="AuthCredentials" use="literal"/>
> >>>>       </wsdl:input>
> >>>>       <wsdl:output>
> >>>>         <soap:body use="literal"/>
> >>>>       </wsdl:output>
> >>>>     </wsdl:operation>
> >>>>
> >>>> When I run this WSDL through wsdltojava using -exsh true, the
> generated
> >>>> client classes do NOT set the header that is specified in the
> binding,
> >>>> which
> >>>> is what I thought that the -exsh is supposed to do for you.  So
> >>>> basically,
> >>>> I'm trying to figure out how I would add this element to my request.
> >>>> Here
> >>>> is what WSDL to java generated, how do I add the AuthCredentials
> >>>>
> >> element
> >>
> >>>> to
> >>>> the messagingPort class so that my request will go through with it?
> All
> >>>> I
> >>>> get currently is an IndexOutOfBoundsException when CXF tries to
> create
> >>>> the
> >>>> header of the SOAP message to send, I'm guessing because I don't know
> >>>> how to
> >>>> add the header.  I looked at the CXF examples on it, but it doesn't
> >>>>
> >> look
> >>
> >>>> like the headers are being added as a header:
> >>>>
> >>>> public void sendNotification() {
> >>>>     NotificationService messagingService = null;
> >>>>     NotificationServicePort messagingPort = null;
> >>>>
> >>>>     messagingService = new NotificationService(wsdl, SERVICE_NAME);
> >>>>     messagingPort = messagingService.getNotificationServicePort();
> >>>>
> >>>>     System.out.println("Invoking sendNotification...");
> >>>>     java.lang.String _sendNotification_parametersVal = "";
> >>>>     javax.xml.ws.Holder<java.lang.String>
> _sendNotification_parameters
> >>>>
> >> =
> >>
> >>>> new
> >>>> javax.xml.ws.Holder<java.lang.String
> >(_sendNotification_parametersVal);
> >>>>     messagingPort.sendNotification(_sendNotification_parameters);
> >>>>     System.out.println
> ("sendNotification._sendNotification_parameters="
> >>>> +
> >>>> _sendNotification_parameters.value);
> >>>>   }
> >>>>
> >>>>
> >>>>
> >>>
> >
> >
>

Reply via email to