使用CXF做webservice整合现有项目的例子
???? 从网上看了很多CXF的资料,大部分都是单独的作为一个webservice项目,对于在现有的spring项目上提供webservice服务的例子基本没有找到。 ???? 我做的这个例子是介绍怎么把cxf整合到现有的spring项目中,现在只做到可以传简单的字符串和JAVABEAN,复杂的以后研究。 ? ? ? 这是例子的下载地址:一个简单的CXF例子 ???? 一,应用cxf应该先把该服务所需要的架包加载进项目中。 ???????????? 对于一个已经搭建好的spring项目,我做的项目中所缺少的架包是 ????????????? cxf-2.4.3.jar?? ,?? neethi-3.0.1.jar???? ,???? wsdl4j-1.6.2.jar???? ,?? xmlschema-core-2.0.1.jar??? ,commons-logging-1.1.1.jar?? ,spring一系列的架包 ??? 二,首先是服务接口 package com.zcz.cxf.service; import javax.jws.WebService; @WebService public interface GreetingService { public String greeting(String userName); public String say(String eat); //public String user(User user); } ????? 三,编写服务实现类 package com.zcz.cxf.service.impl; import javax.jws.WebService; import com.zcz.cxf.service.GreetingService; @WebService public class GreetingServiceImpl implements GreetingService { public String greeting(String userName){ return "你好! " + userName; } public String say(String eat) { return "该吃饭了"+eat; } }
?????? 四,配置spring启动时,加载的xml文件,按照下面的xml在原有的基础上进行添加编辑,只添加我标注的红色部分即可 <?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: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="greetingService" implementor="com.gary.test.ws.service.impl.GreetingServiceImpl" address="/GreetingService" /> </beans> ?????? xmlns:jaxws=http://cxf.apache.org/jaxws ?????? http://cxf.apache.org/jaxwshttp://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="greetingService"implementor="com.gary.test.ws.service.impl.GreetingServiceImpl" address="/GreetingService" /> ???????五,配置web.xml对于webservice的调用,在web.xml中添加以下代码即可 ? <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/cxf/*</url-pattern> </servlet-mapping>
????? 七,客户端对于该接口的调用 ????????????? 首先,新建一个与服务器端相同的服务接口类GreetingService ????????????? 其次,写调用服务的类 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; public class TestGreetingService { public static void main(String[] args) { //创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); //注册WebService接口 factory.setServiceClass(GreetingService.class); //设置WebService地址 factory.setAddress("http://localhost:8080/springmvcModel/cxf/GreetingService"); GreetingService greetingService = (GreetingService)factory.create(); System.out.println("开始调用webservice..."); System.out.println("返回的信息是:"+greetingService.say("米饭")); } } ????? 配置成功 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |