Recently I've posted several issues I've been having using Eclipse Helios 
(3.6), CXF runtime (2.3.0), Tomcat (6.0) and Java (1.6.0_22).  As is often the 
case the cause of the problem was user error and quite simple to remedy.

Simply, my WSDL soap:address was pointing to my deployed WSDL location not my 
service location.  The was the cause of the content type error I was getting in 
my client.

I found a good description of the CXF Servlet functionality and the 
cxf-servlet.xml and was able to provide the correct soap:address in my WSDL.

The only problem I have remaining is my web service is returning a null value 
when it should be returning a string saying hello from the web service.  I'm 
posting some code and my WSDL below.

Can someone take a look at this and see if you can tell me what I might be 
doing wrong?  If you need more information just let me know what to post.

package org.self;

import javax.jws.WebService;

@WebService(targetNamespace = "http://self.org/";, 
            portName = "HelloWorldWebServicePort",
            serviceName = "HelloWorldWebServiceService")
public class HelloWorldWebService
{
 public String SayHello( )
 {
  return "Hello World  From HelloWorldWebService On Tomcat";
 }
}

package org.self;

public final class Client
{
    public static void main(String args[])
    {
        HelloWorldWebService hwws = new HelloWorldWebService( );
        HelloWorldWebServicePortType hwwsPortType = 
                                        hwws.getHelloWorldWebServicePort( );
        System.out.println( hwwsPortType.sayHello( ) );
    }
}

<?xml version="1.0" encoding="utf-8"?><xsd:schema 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:tns="http://self.org/"; 
attributeFormDefault="unqualified" elementFormDefault="qualified" 
targetNamespace="http://self.org/";>
  <xsd:element name="SayHello" type="tns:SayHello"/>
  <xsd:complexType name="SayHello">
    <xsd:sequence/>
  </xsd:complexType>
  <xsd:element name="SayHelloResponse" type="tns:SayHelloResponse"/>
  <xsd:complexType name="SayHelloResponse">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="return" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>


<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="HelloWorldWebService" 
targetNamespace="http://self.org/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; xmlns:tns="http://self.org/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";>
  <wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema";>
<import namespace="http://self.org/"; 
schemaLocation="helloworldwebservice_schema1.xsd"/>
</schema>
  </wsdl:types>
  <wsdl:message name="SayHello">
    <wsdl:part name="parameters" element="tns:SayHello">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="SayHelloResponse">
    <wsdl:part name="parameters" element="tns:SayHelloResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="HelloWorldWebServicePortType">
    <wsdl:operation name="SayHello">
      <wsdl:input name="SayHello" message="tns:SayHello">
    </wsdl:input>
      <wsdl:output name="SayHelloResponse" message="tns:SayHelloResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="HelloWorldWebServiceSoapBinding" 
type="tns:HelloWorldWebServicePortType">
    <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="SayHello">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input name="SayHello">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="SayHelloResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="HelloWorldWebService">
    <wsdl:port name="HelloWorldWebServicePort" 
binding="tns:HelloWorldWebServiceSoapBinding">
      <soap:address location = 
"http://localhost:8080/HelloWorldWebService/services/HelloWorldWebServicePort"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

Reply via email to