Hi, I am new to Apache CXF and this my first post here.
I am trying to develop simple HelloWorld contract first webservice. I have following wsdl which is simple. <?xml version="1.0" encoding="UTF-8" standalone="no"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/Hello/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Hello" targetNamespace="http://www.example.org/Hello/"> <wsdl:types> <xsd:schema targetNamespace="http://www.example.org/Hello/"> <xsd:element name="sayHello"> <xsd:complexType> <xsd:sequence> <xsd:element name="in" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="sayHelloResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="sayHelloRequest"> <wsdl:part element="tns:sayHello" name="parameters"/> </wsdl:message> <wsdl:message name="sayHelloResponse"> <wsdl:part element="tns:sayHelloResponse" name="parameters"/> </wsdl:message> <wsdl:portType name="Hello"> <wsdl:operation name="sayHello"> <wsdl:input message="tns:sayHelloRequest"/> <wsdl:output message="tns:sayHelloResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloSOAP" type="tns:Hello"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="sayHello"> <soap:operation soapAction="http://www.example.org/Hello/sayHello"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="Hello"> <wsdl:port binding="tns:HelloSOAP" name="HelloSOAP"> <soap:address location="http://localhost:9002/Hello"/> </wsdl:port> </wsdl:service> </wsdl:definitions> I generated java classes using following command wsdl2java -d src -ant -impl -server -client -all Hello.wsdl Then I run server using ----------------------------------- ant HelloServer Then I run client using ------------------------------------- and HelloClient I get error Invoking sayHello... [java] Oct 9, 2012 6:40:16 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept [java] WARNING: Interceptor has thrown exception, unwinding now [java] org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader. [java] at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:196) [java] at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:58) [java] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) [java] at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:658) [java] at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2139) [java] at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2022) [java] at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1947) [java] at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) [java] at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632) [java] at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) [java] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) [java] at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:472) [java] at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:302) [java] at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254) [java] at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) [java] at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:123) [java] at $Proxy39.sayHello(Unknown Source) [java] at org.example.hello.Hello_HelloSOAP_Client.main(Hello_HelloSOAP_Client.java:69) [java] Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog [java] at [row,col {unknown-source}]: [1,0] [java] at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:686) [java] at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134) [java] at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040) [java] at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069) [java] at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095) [java] at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:93) [java] ... 17 more [java] Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Error reading XMLStreamReader I captured traffic on wireshark. Following I get on wireshark. POST /Hello HTTP/1.1 Content-Type: text/xml; charset=UTF-8 SOAPAction: "http://www.example.org/Hello/sayHello" Accept: */* User-Agent: Apache CXF 2.2.3 Cache-Control: no-cache Pragma: no-cache Host: localhost:9002 Connection: keep-alive Content-Length: 196 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:sayHello xmlns:ns2="http://www.example.org/Hello/"> <in>Charles</in> </ns2:sayHello> </soap:Body> </soap:Envelope> HTTP/1.1 302 Found Location: http://localhost:9002/Hello/ Content-Length: 0 Server: Jetty(6.1.19) The generated Ant file is <?xml version="1.0"?> <project name="cxf wsdltojava" default="build" basedir="."> <property environment="env"/> <property name="home.dir" location="${basedir}"/> <property name="build.dir" location ="${basedir}/build"/> <property name="build.classes.dir" location ="${build.dir}/classes"/> <property name="build.src.dir" location ="${basedir}"/> <available property="tools.jar" value="$${env.JAVA_HOME}/lib/tools.jar" file="${env.JAVA_HOME}/lib/tools.jar"/> <path id="jdk.tools.classpath"> <pathelement location="${tools.jar}"/> </path> <condition property="is.java.version.15"> <or> <equals arg1="${ant.java.version}" arg2="1.5"/> <equals arg1="${ant.java.version}" arg2="1.6"/> </or> </condition> <fail message="cxf requires Java version 1.5 or higher. You are currently using Java version ${ant.java.version}." unless="is.java.version.15"/> <condition property="cxf.home" value="${env.CXF_HOME}"> <isset property="env.CXF_HOME"/> </condition> <fail message="Please set CXF_HOME environment variable." unless="cxf.home"/> <condition property="cxf-manifest.jar.file" value="${cxf.home}/build/lib/cxf-manifest.jar"> <available file="cxf-manifest.jar" type="file" filepath="${cxf.home}/build/lib"/> </condition> <property name="cxf-manifest.jar.file" value="${cxf.home}/lib/cxf-manifest.jar"/> <fail message="The location ${cxf.home} does not seem to contain a cxf installation; if you are importing this common build file from a location other than the cxf samples directory then you need to set the cxf_HOME environment variable."> <condition> <not> <isset property="cxf-manifest.jar.file" /> </not> </condition> </fail> <condition property="thirdparty.tools.dir" value="${cxf.home}/tools"> <available file="tools" type="dir" filepath="${cxf.home}"/> </condition> <condition property="thirdparty.tools.dir" value="${cxf.home}/lib"> <available file="lib" type="dir" filepath="${cxf.home}"/> </condition> <property name="cxf.etc.dir" location="${cxf.home}/etc"/> <path id="cxf.classpath"> <pathelement location="${home.dir}" /> <pathelement location="${build.classes.dir}"/> <pathelement location="${cxf-manifest.jar.file}"/> </path> <target name="HelloClient" description="Run org.example.hello.Hello_HelloSOAP_Client" depends="compile"> <property name="param" value=""/> <cxfrun classname="org.example.hello.Hello_HelloSOAP_Client" param1="file:Hello.wsdl" param2="${op}" param3="${param}"/> </target> <target name="HelloServer" description="Run org.example.hello.Hello_HelloSOAP_Server" depends="compile"> <cxfrun classname="org.example.hello.Hello_HelloSOAP_Server" param1="file:Hello.wsdl"/> </target> <target name="compile"> <mkdir dir="${build.classes.dir}"/> <javac srcdir="${build.src.dir}" destdir="${build.classes.dir}" debug="true"> <classpath refid="cxf.classpath" /> </javac> </target> <target name="checkstyle"> <checkstyle config="${checkstyle.config.file}"> <fileset dir="${basedir}/src" includes="**/*.java"/> <classpath> <path refid="cxf.classpath"/> </classpath> </checkstyle> </target> <target name="clean"> <delete dir="${build.classes.dir}"/> <delete file="${java.timestamp.file}"/> <delete file="demo.log"/> </target> <target name="build" depends="compile" description="build demo client and server"/> <macrodef name="cxfrun"> <attribute name="classname"/> <attribute name="param1" default=""/> <attribute name="param2" default=""/> <attribute name="param3" default=""/> <attribute name="param4" default=""/> <attribute name="param5" default=""/> <attribute name="jvmarg1" default="-D"/> <attribute name="jvmarg2" default="-D"/> <attribute name="jvmarg3" default="-D"/> <attribute name="jvmarg4" default="-D"/> <attribute name="jvmarg5" default="-D"/> <sequential> <java classname="@{classname}" fork="yes"> <classpath> <path refid="cxf.classpath"/> </classpath> <arg value="@{param1}"/> <arg value="@{param2}"/> <arg value="@{param3}"/> <arg value="@{param4}"/> <arg value="@{param5}"/> <jvmarg value="@{jvmarg1}"/> <jvmarg value="@{jvmarg2}"/> <jvmarg value="@{jvmarg3}"/> <jvmarg value="@{jvmarg4}"/> <jvmarg value="@{jvmarg5}"/> <assertions> <enable package="org.apache.cxf"/> </assertions> <sysproperty key="java.util.logging.config.file" value="${cxf.etc.dir}/logging.properties"/> <sysproperty key="log4j.configuration" value="file:///${cxf.etc.dir}/log4j.properties"/> </java> </sequential> </macrodef> </project> Now I changed <target name="HelloClient" description="Run org.example.hello.Hello_HelloSOAP_Client" depends="compile"> <property name="param" value=""/> <cxfrun classname="org.example.hello.Hello_HelloSOAP_Client" param1="file:Hello.wsdl" param2="${op}" param3="${param}"/> </target> <target name="HelloClient" description="Run org.example.hello.Hello_HelloSOAP_Client" depends="compile"> <property name="param" value=""/> <cxfrun classname="org.example.hello.Hello_HelloSOAP_Client" param1="http://localhost:9002/Hello/?wsdl" param2="${op}" param3="${param}"/> </target> This works prefect. Now following traffic I get on wireshark GET /Hello/?wsdl HTTP/1.1 User-Agent: Java/1.6.0_35 Host: localhost:9002 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive HTTP/1.1 200 OK Content-Type: text/xml Transfer-Encoding: chunked Server: Jetty(6.1.19) 89D <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="Hello" targetNamespace="http://www.example.org/Hello/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/Hello/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema targetNamespace="http://www.example.org/Hello/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/Hello/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="sayHello"> <xsd:complexType> <xsd:sequence> <xsd:element name="in" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="sayHelloResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="sayHelloResponse"> <wsdl:part element="tns:sayHelloResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="sayHelloRequest"> <wsdl:part element="tns:sayHello" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="Hello"> <wsdl:operation name="sayHello"> <wsdl:input message="tns:sayHelloRequest"> </wsdl:input> <wsdl:output message="tns:sayHelloResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloSOAP" type="tns:Hello"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="sayHello"> <soap:operation soapAction="http://www.example.org/Hello/sayHello" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="Hello"> <wsdl:port binding="tns:HelloSOAP" name="HelloSOAP"> <soap:address location="http://localhost:9002/Hello/" /> </wsdl:port> </wsdl:service> </wsdl:definitions> 0 POST /Hello/ HTTP/1.1 Content-Type: text/xml; charset=UTF-8 SOAPAction: "http://www.example.org/Hello/sayHello" Accept: */* User-Agent: Apache CXF 2.2.3 Cache-Control: no-cache Pragma: no-cache Host: localhost:9002 Connection: keep-alive Content-Length: 196 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHello xmlns:ns2="http://www.example.org/Hello/"><in>Charles</in></ns2:sayHello></soap:Body></soap:Envelope>HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 207 Server: Jetty(6.1.19) <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHelloResponse xmlns:ns2="http://www.example.org/Hello/"><out></out></ns2:sayHelloResponse></soap:Body></soap:Envelope> I don't know what is problem. -- View this message in context: http://cxf.547215.n5.nabble.com/Newbie-Simple-Contract-first-webservice-new-to-CXF-tp5716164.html Sent from the cxf-user mailing list archive at Nabble.com.
