with 2.0.1, I can give you a simple wsdl that fails without the exsh option on. I'll go fill out the bug report for you real quick.
On 9/11/07, James Mao <[EMAIL PROTECTED]> wrote: > > We have not finally announce the release of 2.0.2, > The CXF 2.1 is just begin, and we will migrate the jaxws api and jaxb > versions to 2.1, > So, I would say there'll have big changes in CXF2.1, I would suggest you > stick to 2.0.2 > I hope you can get the test case done, so I can fix it for you. > > Regards, > James > > > No problem. Do you have any idea how stable 2.1 is? I notice that my > issue > > with the IndexOutOfBounds with the one Interceptor doesn't happen on 2.1but > > does on 2.0.1 (so somehow it have been fixed, directly or > indirectly). Is > > it helpful to know if it's a problem on 2.1? Is it relatively safe to > use > > 2.1 snapshots? > > > > 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); > >>>>>> } > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>> > > > > >
