Hi,

It can be a POJO.

Freeman
On 2011-1-9, at 下午10:56, Michael wrote:

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" <freeman.f...@gmail.com >
To: <users@cxf.apache.org>
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




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