spring mvc + mybaties + mysql 完美整合cxf 实现webservice接口 (服务端、客户端)

spring-3.1.2、cxf-3.1.3、mybaties、mysql 整合实现webservice需要的完整jar文件 地址:http://download.csdn.net/detail/xuxiaoyu__/9868032

整合的过程其实很简单,通过简单的配置就可以,但是可悲的是 一堆问题都是由于jar缺失或者jar版本冲突引起的,所以附上全部jar文件

发布webservice服务

第一步:编写接口和实现类

PlcDataDetail.java

 1 package test;
 2
 3 import java.util.Date;
 4
 5 public class PlcDataDetail{
 6
 7     private Integer id;
 8
 9     private Integer plc_info_address_id;
10
11     private String value;
12
13     private Date create_time;
14
15     public Integer getId() {
16         return id;
17     }
18
19     public void setId(Integer id) {
20         this.id = id;
21     }
22
23     public Integer getPlc_info_address_id() {
24         return plc_info_address_id;
25     }
26
27     public void setPlc_info_address_id(Integer plc_info_address_id) {
28         this.plc_info_address_id = plc_info_address_id;
29     }
30
31     public String getValue() {
32         return value;
33     }
34
35     public void setValue(String value) {
36         this.value = value;
37     }
38
39     public Date getCreate_time() {
40         return create_time;
41     }
42
43     public void setCreate_time(Date create_time) {
44         this.create_time = create_time;
45     }
46 }

BaseWebService.java

 1 package xd.service.plc;
 2
 3 import javax.jws.WebService;
 4
 5 import xd.persistence.beans.PlcDataDetail;
 6
 7 /**
 8  * This class was generated by Apache CXF 3.1.6
 9  * 2017-06-12T10:16:26.245+08:00
10  * Generated source version: 3.1.6
11  *
12  */
13 //必须为targetNamespace赋值,在另一个项目调用接口时,值必须一致,不然会匹配不到
14 //(可以把发布时默认的值赋值给targetNamespace)
15 @WebService(targetNamespace = "http://impl.plc.service.xd/")
16 public interface BaseWebService {
17
18     public PlcDataDetail readPlcData(Integer id);
19 }

BaseWebServiceImp.java

 1 package xd.service.plc.impl;
 2
 3 import javax.jws.WebService;
 4
 5 import org.springframework.beans.factory.annotation.Autowired;
 6
 7 import xd.persistence.beans.PlcDataDetail;
 8 import xd.service.plc.BaseWebService;
 9 import xd.service.plc.PlcDataDetailService;
10
11
12 @WebService(endpointInterface="xd.service.plc.BaseWebService",serviceName="plcDataService")
13 public class BaseWebServiceImp implements BaseWebService {
14     @Autowired
15     private PlcDataDetailService plcDataDetailService;//业务处理类
16
17     public PlcDataDetail readPlcData(Integer id) {
18         PlcDataDetail plcDataDetail = new PlcDataDetail();
19         plcDataDetail = plcDataDetailService.selectbyId(id);
20         return plcDataDetail;
21     }
22
23 }

第二步:配置spring的核心文件 application-context.xml

添加命名空间以及配置接口发布信息:

1 xmlns:jaxws="http://cxf.apache.org/jaxws"
2 xmlns:jaxrs="http://cxf.apache.org/jaxrs"
3
4 xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
5            http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"
6 <!-- address:暴露出来的地址,名称自己随便起 ;id属性此处不加也没问题-->
7 <jaxws:endpoint implementor="xd.service.plc.impl.BaseWebServiceImp" address="/ReadPlcData" />

配置web.xml:


<servlet-name>CXFService</servlet-name>
  <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<!-- 本系统的WebService路径必须以/ws/开头 -->
<servlet-mapping>
  <servlet-name>CXFService</servlet-name>
  <url-pattern>/ws/*</url-pattern>
</servlet-mapping>

访问:http://localhost:8080/ws  查看是否显示wsdl (项目通过tomcat配置不需要输入项目名,同学要注意)  结果

 客户端调用接口:

新建一个项目,把服务的接口类BaseWebService.java拷过来,jar也要拷过来哦,编写测试类:

BaseWebService.java

 1 package test;
 2
 3 import javax.jws.WebService;
 4
 5 /**
 6  * This class was generated by Apache CXF 3.1.6
 7  * 2017-06-12T10:16:26.245+08:00
 8  * Generated source version: 3.1.6
 9  *
10  */
11 @WebService(targetNamespace = "http://impl.plc.service.xd/")
12 public interface BaseWebService {
13
14     public PlcDataDetail readPlcData(Integer id);
15 }

MyClient.java

 1 package test;
 2
 3 import java.util.Properties;
 4
 5 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
 6
 7 public class MyClient {
 8     public static void main(String args[]) {
 9         //下面三行代码是系统初始化设置,若独立于服务接口外调用,不加也可以,如果在接口项目内调用需要加上,不然会报错
10         Properties props = System.getProperties();
11         props.setProperty("org.apache.cxf.stax.allowInsecureParser", "1");
12         props.setProperty("UseSunHttpHandler", "true");
13         //创建WebService客户端代理工厂
14         JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
15         //注册WebService接口
16         factory.setServiceClass(BaseWebService.class);
17         //设置WebService地址
18         factory.setAddress("http://localhost:8080/ws/ReadPlcData");
19         BaseWebService service = (BaseWebService) factory.create();
20         System.out.println(service.readPlcData(14).getValue());//传参查询
21     }
22 }

  总结:网上的资源很多,有新资源,也有很久之前的了,在整合的时候出现了很多冲突,要注意自己项目中cxf的版本。比如刚开始顺着网上说的 在spring文件中配置下面三行资源,结果总是报错说找不到,其实在cxf 3.x 版本后就不需要再手动配置了,所以找问题要找最新的,老的不一定适用,用旧版本在开发过程中可能就是个大坑啊。

<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" />
时间: 2024-08-05 19:35:37

spring mvc + mybaties + mysql 完美整合cxf 实现webservice接口 (服务端、客户端)的相关文章

日常开发系列——Maven+Spring+Spring MVC+MyBatis+MySQL整合SSM框架

进入公司开发已经3个多月了,项目用的是Maven+Spring+Spring MVC+MyBatis+MySQL,趁这个周末有空,仔细研读一下公司项目的基本框架,学习一下这个环境是怎么搭建起来的,经过自己的研究终于是成功地试验出来.自己亲手做的才算是自己学到的,决定将其记录下来,以便日后查询,源码同时也欢迎大家拍砖. 一.数据库的准备 这次整合试验想着做个简单的,就决定做一个普通的用户登陆,就一张表吧 我新建的数据库名字是test,然后新建了一张表 DROP TABLE IF EXISTS `u

Spring MVC +MyBatis +MySQL 简单的登录查询 Demo 解决了mybatis异常

忙活了大半天,饭也没顾得上吃,哎许久不动手,一动手就出事,下面请看今天的重头戏,额吃个饭回来再发了! 1.整体结构 2.准备工作 数据库: --Mysql 5.6 创建数据库 wolf CREATE DATABASE wolf; 创建用户表 user create table user( id int  AUTO_INCREMENT  primary key, name varchar(25) not null, pwd varchar(20) not null, create_time dat

spring mvc+ibatis+mysql的组合框架入门实例demo源码下载

原文:spring mvc+ibatis+mysql的组合框架入门实例demo源码下载 源代码下载地址:http://www.zuidaima.com/share/1550463678958592.htm spring mvc+ibatis+mysql的组合框架实例 首页 http://localhost:端口/项目/index.jsp 添加用户 添加地址 项目截图 jar包截图

SpringBoot2.1.6 整合CXF 实现Webservice

SpringBoot2.1.6 整合CXF 实现Webservice 前言 最近LZ产品需要对接公司内部通讯工具,采用的是Webservice接口.产品框架用的SpringBoot2.1.6,于是采用整合CXF的方式实现Webservice接口.在这里分享下整合的demo. 代码实现 项目结构 直接通过idea生成SpringBoot项目,也可以在http://start.spring.io生成.过于简单,这里不赘述. [1561728847121]( ) POM文件引入.这里引入的版本是3.2

使用cxf开发webservice接口

项目中经常用到开发webservice接口,及调用webService接口.这里讲解如何使用cxf开发webService接口. 一.webservice介绍及理解 webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互.        比如,平台平台淘宝.京东想获取其他快递公司数据接口,需快递公司开放数据接口.       那么 webservice就是出于以上类似需求而定义出来的规范:无需关心对方什么平台上开发以及使用何种语言开发.       只关心调用

Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境

项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建一个Maven工程: 选择webapp 随便填写了: 创建完成之后工程会报错: 接下来怎么解决的? 选中项目点击右键,选择“Properties”  进入下面界面: 选中project facets ,然后将java版本改成 你的jdk版本,或者1.6以上版本. 之后选择 java build pa

Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境【转】

项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建一个Maven工程: 选择webapp 随便填写了: 创建完成之后工程会报错: 接下来怎么解决的? 选中项目点击右键,选择"Properties"  进入下面界面: 选中project facets ,然后将java版本改成 你的jdk版本,或者1.6以上版本. 之后选择 java bui

spring、spring mvc、mybatis框架整合基本知识

学习了一个多月的框架知识了,这两天很想将它整合一下.网上看了很多整合案例,基本都是基于Eclipse的,但现在外面公司基本都在用Intellij IDEA了,所以结合所学知识,自己做了个总结,有不足之处欢迎指正. 首先,我是参考了http://blog.csdn.net/zhshulin/article/details/37956105这篇做的Intellij IDEA翻版.Intellij IDEA的许多操作方式与习惯与eclipse区别很大,所以很容易走入误区.直接上操作吧. 1.基本概念

Velocity + log4j + Spring MVC + Spirng + MyBatis + Maven整合

1. 整合Spring和MyBatis 注意:(1) 如果Mapper接口的名称是HelloWorldMapper,则对应的mapper映射文件也应该名称为HelloWorldMapper.xml或者是helloWorldMapper.xml. (2) 对于Maven项目而言,我们通常会把配置文件放到resources目录下面的,对于HelloWorldMapper.xml文件我也喜欢放到该目录下面.但是如果直接放到该目录下面是找不到该mapper映射文件的.如果直接放到src/main/jav