Hi Ryan,
I just tested your wsdl with the latest CXF using the wsdl2java to
generate both client and server code.
It is "wsdl2java -all -exsh true wsdlname".
They work fine to me. Here is the client out going message:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthCredentials xmlns="urn://testnotification">
<username>userName</username>
<password>password</password>
</AuthCredentials>
</soap:Header>
<soap:Body>
<parameters xmlns:ns2="urn://testnotification">hell world
</parameters></soap:Body></soap:Envelope>
Can I know you CXF version? Maybe you need to update it :)
Willem.
Ryan Moquin wrote:
Here you go, I created a scaled down wsdl that is as simple as I can think
of, but still representative of the wsdl I'm working with that exploits this
problem. I'll post the wsdl here that I created and then I'll also try the
-exsh option, which I haven't been using. Here is a wsdl that will give you
the problem I'm having when you call the operation it has defined:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="urn://testnotification"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="urn://testnotification"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified"
targetNamespace="urn://testnotification">
<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>
</s:schema>
</wsdl:types>
<wsdl:message name="notificationInput">
<wsdl:part name="parameters" type="s:string"/>
</wsdl:message>
<wsdl:message name="notificationOutput">
<wsdl:part name="parameters" type="s:string"/>
</wsdl:message>
<wsdl:message name="sendNotificationAuthCredentials">
<wsdl:part name="AuthCredentials" element="tns:AuthCredentials"/>
</wsdl:message>
<wsdl:portType name="NotificationServicePort">
<wsdl:operation name="sendNotification">
<wsdl:input message="tns:notificationInput"/>
<wsdl:output message="tns:notificationOutput"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="NotificationServicePort"
type="tns:NotificationServicePort">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<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>
</wsdl:binding>
<wsdl:service name="NotificationService">
<documentation xmlns="http://schemas.xmlsoap.org/wsdl/"/>
<wsdl:port name="NotificationServicePort"
binding="tns:NotificationServicePort">
<soap:address location="https://localhost/webservice/notification.asmx
"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
On 9/10/07, Willem Jiang <[EMAIL PROTECTED]> wrote:
Hi Ryan,
Can you tell me how you generate the soap header message with the
wsdl2java?
Did you specify the option -exsh true when you call wsdl2java?
If not , please try it again.
Willem.
Ryan Moquin wrote:
I actually just got my breakpoint to be hit:
It's choking on an element of my WSDL that looks like this:
<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>
I would like to post the whole WSDL, but I'm not sure I'm allowed to.
Something related to this element is causing an arraylist to not fill
itself
with something. I notice that the "type" variable in the
MessagePartInfo
class is null when representing this element. No idea why. typeClass
variable is also null as well.... maybe it doesn't like something with
how
this is defined?
On 9/10/07, Benson Margulies <[EMAIL PROTECTED]> wrote:
If it really is never talking to the server (which would be really
surprising) then you should be able to create a standalone test case
that we could debug into?
-----Original Message-----
From: Ryan Moquin [mailto:[EMAIL PROTECTED]
Sent: Monday, September 10, 2007 8:39 PM
To: [email protected]
Subject: Re: Can't figure out why I'm getting this error or how to
troubleshoot it
I tried and it appears that no request has been sent. I used
TCPMonitor
and
changed the URL that my client was pointing to. When I run the
client, no
message comes across TCPMonitor and I still get the same error. It
appears
that it's trying to do something with the headers when constructing
the
SOAP
message? I was trying get a debug point to work in netbeans in order
to
try
to get an idea what CXF is trying to do at the time the exception
occurs,
but so far I haven't had luck getting netbeans to make the association
to
the source code so that the breakpoint is hit.
On 9/10/07, Benson Margulies <[EMAIL PROTECTED]> wrote:
The service you are talking to is very unhappy with you. Can you get
a
trace of the message traffic?
-----Original Message-----
From: Ryan Moquin [mailto:[EMAIL PROTECTED]
Sent: Monday, September 10, 2007 7:59 PM
To: [email protected]
Subject: Can't figure out why I'm getting this error or how to
troubleshoot it
I've been trying to use the generated files from my WSDL to access
an
external webservice that uses SSL and authentication. I setup an
http-conduit (I was getting the protocol error when I didn't have
it
setup)
for SSL and now I get the following error, anyone have any ideas
what
I
can
do from here?:
javax.xml.ws.soap.SOAPFaultException: Index: 1, Size: 1
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(
JaxWsClientProxy.java:169)
at $Proxy101.sendNotification(Unknown Source)
at service.NotificationServiceClient.sendNotification(
NotificationServiceClient.java:88)
at
service.NotificationServiceClientTest.testSendNotification(
NotificationServiceClientTest.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java
:552)
at
org.testng.internal.Invoker.invokeMethod(Invoker.java:411)
at
org.testng.internal.Invoker.invokeTestMethods(Invoker.java:785)
at
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java
:114)
at org.testng.TestRunner.privateRun(TestRunner.java:693)
at org.testng.TestRunner.run(TestRunner.java:574)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:241)
at org.testng.SuiteRunner.run(SuiteRunner.java:145)
at
org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:901)
at org.testng.TestNG.runSuitesLocally(TestNG.java:863)
at
org.apache.maven.surefire.testng.TestNGExecutor.executeTestNG(
TestNGExecutor.java:64)
at
org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(
TestNGXmlTestSuite.java:75)
at
org.apache.maven.surefire.Surefire.run(Surefire.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(
SurefireBooter.java:225)
at org.apache.maven.surefire.booter.SurefireBooter.run(
SurefireBooter.java:139)
at
org.apache.maven.plugin.surefire.SurefirePlugin.execute(
SurefirePlugin.java:376)
at
org.apache.maven.plugin.DefaultPluginManager.executeMojo(
DefaultPluginManager.java:443)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(
DefaultLifecycleExecutor.java:539)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifec
yc
le
(DefaultLifecycleExecutor.java:480
)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(
DefaultLifecycleExecutor.java:459)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandle
Fa
ilures
(DefaultLifecycleExecutor.java
:311)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments
(
DefaultLifecycleExecutor.java:278)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(
DefaultLifecycleExecutor.java:143)
at
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)
at
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:272)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java
:315)
at
org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at
org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java
:430)
at
org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.RangeCheck(ArrayList.java:546)
at java.util.ArrayList.get(ArrayList.java:321)
at org.apache.cxf.message.MessageContentsList.get(
MessageContentsList.java:76)
at
org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleHeaderP
ar
t(
SoapOutInterceptor.java:179)
at
org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.writeSoapEnve
lo
peStart
(SoapOutInterceptor.java:124)
at
org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage
(
SoapOutInterceptor.java:76)
at
org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage
(
SoapOutInterceptor.java:57)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
PhaseInterceptorChain.java:207)
at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
at
org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
at
org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java
:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(
JaxWsClientProxy.java:135)
... 45 more
my cfx.xml looks like this:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sec="http://cxf.apache.org/configuration/security"
xmlns:http="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="
http://cxf.apache.org/configuration/security
http://cxf.apache.org/schemas/configuration/security.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<http:conduit
name="{urn://testnotification}NotificationPort.http-conduit">
<http:authorization>
<sec:UserName>testuser</sec:UserName>
<sec:Password>testpass</sec:Password>
</http:authorization>
<http:tlsClientParameters secureSocketProtocol="SSL">
<sec:cipherSuitesFilter>
<!-- these filters ensure that a ciphersuite with
export-suitable or null encryption is used,
but exclude anonymous Diffie-Hellman key change as
this is vulnerable to man-in-the-middle attacks -->
<sec:include>.*_EXPORT_.*</sec:include>
<sec:include>.*_EXPORT1024_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:include>.*_WITH_NULL_.*</sec:include>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
</http:tlsClientParameters>
</http:conduit>
</beans>
Thanks!