The underlying issue is a mix of URL's.  Some places are using:

"http://localhost:9002/Hello/";

and others are using:

"http://localhost:9002/Hello";

Check how the service is being deployed and make sure the same URL is used 
consistently.

Dan



On Oct 9, 2012, at 9:56 AM, cb9 <[email protected]> wrote:

> 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.

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to