一个CXF集成SPRING的WEBSERVICE完整实例
1 首先准备以下JAR包
- activation.jar
- commons-logging-1.1.1.jar
- cxf-2.5.6.jar
- jaxb-api-2.2.1.jar
- jaxb-impl-2.1.3.jar
- jaxws-api-2.2.8.jar
- neethi-3.0.2.jar
- ow2-jws-2.0-spec-1.0.11.jar
- spring-aop-3.0.5.RELEASE.jar
- spring-asm-3.0.5.RELEASE.jar
- spring-beans-3.0.5.RELEASE.jar
- spring-context-3.0.5.RELEASE.jar
- spring-context-support-3.0.5.RELEASE.jar
- spring-core-3.0.5.RELEASE.jar
- spring-expression-3.0.5.RELEASE.jar
- spring-oxm-3.0.5.RELEASE.jar
- spring-web-3.0.5.RELEASE.jar
- spring-ws-core-2.0.2.RELEASE.jar
- spring-ws-security-2.0.2.RELEASE.jar
- spring-xml-1.5.9.jar
- stax-api-1.0.jar
- stax2-api-3.1.1.jar
- webservices-api-2.2.0-1.jar
- webservices-extra-2.1-20.jar
- woodstox-core-asl-4.1.2.jar
- ws-test.jar
- wsdl4j-1.6.2.jar
- wss4j-1.6.7.jar
- xmlschema-core-2.0.3.jar
2 编写服务端
2.1 新建一个空的WEB工程,我这里命名为ws_test,将其放置于TOMCAT的webapps目录;
2.2 然后在ws_test下面建立WEB-INF文件夹,并在WEB-INF文件夹中建立目录lib;
2.3 将上面提到的JAR包都拷贝到lib目录中;
2.4 在WEB-INF目录中新建web.xml文件,并将如下内容放于其中:
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
- <description>
- Web Service Test.
- </description>
- <display-name>Web Service Test</display-name>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:applicationContext-server.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>CXFService</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>CXFService</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
这个配置文件是WEB应用的核心配置文件,如Listener的配置,servlet请求的映射等,这里并配置了启动的时候加载SPRING,并初使化我们的WEBSERVICE服务端配置文件。
2.5 在ECLIPSE中新建JAVA工程,并在工程中新建lib目录,将上面提到的JAR包全部放到lib目录,并将他们全部加入到classpath中;
2.6 增加服务端的JAVA类
这个配置文件是WEB应用的核心配置文件,如Listener的配置,servlet请求的映射等,这里并配置了启动的时候加载SPRING,并初使化我们的WEBSERVICE服务端配置文件。
2.5 在ECLIPSE中新建JAVA工程,并在工程中新建lib目录,将上面提到的JAR包全部放到lib目录,并将他们全部加入到classpath中;
2.6 增加服务端的JAVA类
- package com.use.test.ws.server;
- import javax.jws.WebParam;
- import javax.jws.WebService;
- import javax.jws.soap.SOAPBinding;
- import javax.jws.soap.SOAPBinding.Style;
- import com.use.test.ws.entity.User;
- /**
- * <b>function:</b>定制客户端请求WebService所需要的接口
- */
- @WebService
- @SOAPBinding(style = Style.RPC)
- public interface IService {
- public User getUserByName(@WebParam(name = "name") String name);
- public void setUser(User user);
- }
- package com.use.test.ws.server;
- import java.util.Date;
- import javax.jws.WebParam;
- import javax.jws.WebService;
- import javax.jws.soap.SOAPBinding;
- import javax.jws.soap.SOAPBinding.Style;
- import com.use.test.ws.entity.User;
- /**
- * <b>function:</b> WebService传递复杂对象,如JavaBean、Array、List、Map等
- */
- @WebService
- @SOAPBinding(style = Style.RPC)
- @SuppressWarnings("deprecation")
- public class TestService implements IService {
- public User getUserByName(@WebParam(name = "name") String name) {
- User user = new User();
- user.setId(new Date().getSeconds());
- user.setName(name);
- user.setAddress("china");
- user.setEmail(name + "@test.com");
- return user;
- }
- public void setUser(User user) {
- System.out.println("############Server setUser###########");
- System.out.println("setUser:" + user);
- }
- }
2.7 在src目录下建立applicationContext-client.xml,并放入以下内容:
- <span xmlns="http://www.w3.org/1999/xhtml" style=""><span xmlns="http://www.w3.org/1999/xhtml" style=""><?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.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="userServiceBean" class="com.use.test.ws.server.TestService"/>
- <bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
- <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
- <jaxws:server id="userService" serviceClass="com.use.test.ws.server.IService" address="/Users">
- <jaxws:serviceBean>
- <ref bean="userServiceBean"/>
- </jaxws:serviceBean>
- <jaxws:inInterceptors>
- <ref bean="inMessageInterceptor"/>
- </jaxws:inInterceptors>
- <jaxws:outInterceptors>
- <ref bean="outLoggingInterceptor"/>
- </jaxws:outInterceptors>
- </jaxws:server>
- </beans>
- </span></span><span style="color:#099000;"><span style="color:#000000;font-weight: bold;"><span style="color:#000000;font-weight: bold;"></span></span></span>
2.8 将建立的Java工程导出jar包,只导出src下面的内容即,并将这个jar包放到上面的TOMCAT工程中的ws_test/WEB-INF/lib目录下,并启动TOMCAT服务器;
2.9 启动成功后,此时访问URL:http://localhost:8080/ws_test/Users?wsdl,应该会看到WSDL的输出。
3 编写客户端
3.1 独立的客户端请求类
- package com.use.test.ws.client;
- import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
- import com.use.test.ws.entity.User;
- import com.use.test.ws.server.IService;
- public class TestClient {
- public static void main(String[] args) {
- JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
- factory.setServiceClass(IService.class);
- factory.setAddress("http://localhost:8080/ws_test/Users");
- IService service = (IService) factory.create();
- System.out.println("#############Client getUserByName##############");
- User user = service.getUserByName("hoojo");
- System.out.println(user);
- user.setAddress("China-Guangzhou");
- service.setUser(user);
- }
- }
点击右键就可以运行这个类。
3.2 与SPRING的集成,首先需要在src下面建立配置文件applicationContext-client.xml,将输入以下内容:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.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:client id="userWsClient" serviceClass="com.use.test.ws.server.IService" address="http://localhost:8080/ws_test/Users"/>
- </beans>
3.3 建立JAVA类
- package com.use.test.ws.client;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import com.use.test.ws.entity.User;
- import com.use.test.ws.server.IService;
- /**
- * <b>function:</b>请求Spring整合CXF的WebService客户端
- */
- public class SpringUsersWsClient {
- public static void main(String[] args) {
- ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-client.xml");
- IService service = ctx.getBean("userWsClient", IService.class);
- System.out.println("#############Client getUserByName##############");
- User user = service.getUserByName("hoojo");
- System.out.println(user);
- user.setAddress("China-Guangzhou");
- service.setUser(user);
- }
- }
直接运行这个类就OK了。
同事可以参考github上的代码:https://github.com/zhangyuchenoo/webservice
一个CXF集成SPRING的WEBSERVICE完整实例的更多相关文章
- CXF集成Spring实现webservice的发布与请求
CXF集成Spring实现webservice的发布(服务端) 目录结构: 主要代码: package com.cxf.spring.pojo; public class User { int id ...
- CXF集成spring做webservice接口
一 . cxf 的jar包 1.cxf-2.3.3.jar 2.wsdl4j-1.6.2.jar 3.wss4j-1.5.11.jar 4.wstx-asl-3.2.0.jar 5.XmlSchema ...
- Spring Boot集成Spring Data Jpa完整实例
步骤: 添加依赖: 配置文件: 出了数据库的配置,还要配置jpa相关的: 实体类: Dao接口: 定义一个查询的方法,如果是jpa默认就有也可以不写: 测试: 如果报下面的错误,说明jdk9中缺少相关 ...
- CXF整合Spring开发WebService
刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下: 要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步: 1.打开 ...
- CXF整合Spring发布WebService实例
一.说明: 上一篇简单介绍了CXF以及如何使用CXF来发布一个简单的WebService服务,并且介绍了客户端的调用. 这一篇介绍如何使用CXF与spring在Web项目中来发布WebService服 ...
- xfire集成spring构建webservice
前言:xfire.spring都是比较流行的技术,这里就不再赘述他们各自的优点:本文着重介绍xfire和spring的整合,不会做太深入的探究. 服务端 1. web.xml配置 spring配置部分 ...
- 使用CXF和spring搭建webService服务
虽然下一个项目需要使用xfire,但是在查资料的过程中还是看到有不少地方都说cxf比xfire更好,cxf继承了xfire,但是不仅仅包含xfire,因此便也一起来尝试尝试.大概是有了xfire的经验 ...
- Android之ksoap2-android详解与调用天气预报Webservice完整实例
Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi ...
- CXF之四 cxf集成Spring
CXF原生支持spring,可以和Spring无缝集成.WebService框架CXF实战一在Tomcat中发布WebService(二)通过Spring Web实现CXFServlet.下面将Spr ...
随机推荐
- 32_java之TCP和UDP
01网络模型 *A:网络模型 TCP/IP协议中的四层分别是应用层.传输层.网络层和链路层,每层分别负责不同的通信功能,接下来针对这四层进行详细地讲解. 链路层:链路层是用于定义物理传输通道,通常是对 ...
- 关于json_encode转义斜杠的问题
加上参数 JSON_UNESCAPED_SLASHES即可 echo json_encode($data,JSON_UNESCAPED_SLASHES);
- leetcode861
public class Solution { public int MatrixScore(int[][] A) { ); ].GetLength(); //判断最高位是否为1 ; i < r ...
- ICaptureGraphBuilder2::RenderStream 智能连接方法浅析
ICaptureGraphBuilder2::RenderStream HRESULT RenderStream( [in] const GUID *pCategory, [in] const GUI ...
- HBase安装和启动
目录 认识HBase 前期准备 1. 解压HBase 2. 修改3个配置文件(配置文件目录:hbase-0.96.2-hadoop2/conf/) 3. 将hadoop的hdfs-site.xml和c ...
- SpinBlur - 旋转模糊
[SpinBlur - 旋转模糊] Using the Spin Blur effect, you can rotate and blur the image around one or more p ...
- 学习 java 编程语言两个月来的感受
今天是我接触java编程的第81天, 现在的感受是觉得非常快乐, 每次看着自己的写的代码能成功运行的时候那种喜悦是无法言表的, 最初接触电脑还是在小学, 后来到了初中觉得电脑无非就是点点鼠标, 按按键 ...
- maven标签说明
<project xmlns="http://maven.apache.org/POM/4.0.0 " xmlns:xsi="http://www.w3.org/2 ...
- intval()
1.将字符串转换成整数 2.取数字的整数部分
- 怎样才能做好SNS社区网站
顺应历史潮流,大批的网络社区SNS(Social Networking Services)发展起来. SNS旨在构建一个网络上的人际关系网,让公众足不出户即可实现社交意愿.SNS满足了人的交流欲望,成 ...