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); }
