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.1 but
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);
  }




Reply via email to