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