求助CXF的HelloWorld的例子

happy_20082998 2008-03-20 03:05:00
按照CXF官方网站的步骤,可Client调用的时候确出现
javax.xml.ws.WebServiceException: Could not find operation info for web method sayHi.
的异常.大家帮我看看,很着急,多谢多谢!

接口HelloWorld 代码如下:

package demo.test;
import javax.jws.WebService;
public interface HelloWorld {
String sayHi(String text);
}

实现类HelloWorldImpl 代码如下:

package demo.test;
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String text) {
return "Hello " + text;
}
}

beans.xml如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint
id="helloWorld"
implementor="demo.test.HelloWorldImpl"
address="/HelloWorld" />
</beans>

client的xml如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">

<bean id="client" class="demo.test.HelloWorld"
factory-bean="clientFactory" factory-method="create"/>

<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="demo.test.HelloWorld"/>
<property name="address" value="http://localhost:8080/myweb/services/HelloWorld"/>
</bean>
</beans>

Client调用代码如下:

package demo.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ClientCall {

public String getHelloMessage(String p){
ClassPathXmlApplicationContext context
= new ClassPathXmlApplicationContext(new String[] {"demo/test/clientbean.xml"});

HelloWorld client = (HelloWorld)context.getBean("client");

String response = client.sayHi(p);
return response;
}
}



访问http://localhost:8080/myweb/HelloWorld?wsdl内容如下:

<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.demo/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="HelloWorldImplService" targetNamespace="http://test.demo/">
<wsdl:portType name="HelloWorldImpl" />
- <wsdl:binding name="HelloWorldImplServiceSoapBinding" type="tns:HelloWorldImpl">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
</wsdl:binding>
- <wsdl:service name="HelloWorldImplService">
- <wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort">
<soap:address location="http://localhost:8080/axis1/ws/HelloWorld" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
...全文
1193 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
宁静致远_ 2010-09-05
  • 打赏
  • 举报
回复
接口上要加上@WebService
实现类要指明接口@WebService(endpointInterface="com.ejb.IEjbTest", serviceName = "EjbTestService")
天下无贼sk 2008-06-03
  • 打赏
  • 举报
回复
能不能再解释清楚
javalfans 2008-04-20
  • 打赏
  • 举报
回复
兄弟,你的HelloWorld.java源文件没有加注释"@WebService",源代码如下:

package demo.spring;

import javax.jws.WebService;

@WebService
public interface HelloWorld {
String sayHi(String text);
}

加上去你的问题就解决啦。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧