Thanks, I'll take a look at this.

But, after giving this problem some thought I have another question:

Does the class that implements the web service have to be a Java Bean or can in be a POJO?

----- Original Message ----- From: "Freeman Fang" <[email protected]>
To: <[email protected]>
Sent: Sunday, January 09, 2011 7:03 AM
Subject: Re: Web Service Method Returns null


Hi,

My comment inline
On 2011-1-9, at 上午12:01, Michael wrote:

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";
// when you call  hwwsPortType.sayHello( ), this method not get invoked.

}
}

There should be a class implements HelloWorldWebServicePortType
interface have sayHello method and return whatever you want to return,
but not the one in HelloWorldWebService.

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


--
Freeman Fang

------------------------

FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org


Reply via email to