这个比较迷惑人。。。至少对我这个初学者来说是如此。后面解释原因。
一、加入cxf支持
简单的说就是创建一个普通的web项目,并加将cxf的发布包和依赖包加入到项目的lib目录下。如果本项目不存在对外提供web服务的义务,那么可以只加入作为客户端所需的依赖包即可(具体是哪几个,我现在也不知道
)
二、创建客户端的对应接口
package cn.ibeans.cxf.client;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
String sayHello(String msg);
}
三、配置spring
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.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" />
-->
<bean id="client" class="cn.ibeans.cxf.client.HelloWorld"
factory-bean="clientFactory" factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="cn.ibeans.cxf.client.HelloWorld"/>
<property name="address" value="http://localhost:8088/cxfServer/HelloWorld"/>
</bean>
</beans>
四、测试一把
写个测试类
package cn.ibeans.cxf.client;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloWorldTest {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // your Spring ApplicationContext
HelloWorld client = (HelloWorld) context.getBean("client");
String s = "aaaaaa";
if(client!=null){
s = client.sayHello("1234567880");
}
System.out.println("服务端的返回值为:"+s);
}
}
运行一下测试类。看看都输出了什么?
五、小结
1、一定不要忘了在客户端创建一个名称和方法均与服务端一至的接口,这是我刚明白的道理。网上很多文章都写得很好。但全都忽略了这一点。那些文章往往将客户端和服务端放在一个web项目里演示。所以客户端可以直接引用服务端的接口类。但现实中完全不是这样,服务端能对客户端提供的只有wsdl的访问地址。很是感慨:高手写的文章往往会忽略一些不值一提,但对初学者却非常重要的细节。我就在这点上花费了不少时间才明白。
2、当前例子中只写了个java类来做测试。真正的web应用会对它页面来调用接口实现与服务端的对接。
分享到:
相关推荐
这个代码例子是为了调用CXF提供的WS服务,所以先要下载“CXF和Spring结合的例子”,并将服务器(tomcat)运行起来,在利用本客户端测试,本客户端是根据服务端发布的WSDL文件,用wsdl2java直接生成java代码,加入到...
针对目前网上的很多cxf相关的服务开发源码不能使用,自己做的cxf与spring的整合,里面包含了服务端和客户端代码,还有说明文档,这个demo使用的是cxf的服务端,axis2的客户端,希望能够帮到cxf初学者们。
CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx )
使用cxf+spring框架开发webservice的客户端与服务端代码,用于连接两个项目
绝对可运行,里面有客户端和服务端还有对应的操作文档,导入eclipse或者MyEclipse十分钟内就搞定,虽然贵点但是绝对物有所值.
使用cxf wsdl2java生成webservice客户端命令
cxf例子,认证,登录,客户端 cxf学习 cxf实例 cxf
webserivce.、cxf整合spring,用的是spring3和cxf3。欢迎大家下载尝试
使用idea创建maven项目组建spring+cxf 客户端使用idea创建java Enterprise 中的WebServices Client进行创建
完整整合spring4、cxf3和maven3的服务端和客户端项目。
Apache cxf 学习笔记.pdfApache cxf 学习笔记.pdf
cxf客户端调用axis服务端流程
Cxf客户端及服务器端,实现客户端和服务器端的权限验证,可以直接运行,很简单,开始研究cxf的时候很少有权限验证的资源,所有我实现 了之后,拿来跟大家分享
CXF源码:CXF_Spring源码 CXF源码:CXF_Spring源码
CXF结合spring项目实例,com.email.ws.impl包下为eclipse工具生成的客户端,text包用来测试
cxf在创建客户端出现编码GBK-不可映射字符的编码问题解决的jar
springboot整合CXF发布webservice和客户端调用 项目中每个类都有详细的注释,保证都能看懂,不失为一个学习springboot整合cxf来学习webservice发布调用的好例子
CXF+spring+struts实现WebService