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