webService学习之路(二):springMVC集成CXF快速发布webService
继上一篇webService入门之后,http://www.cnblogs.com/xiaochangwei/p/4969448.html ,现在我将我周六在家研究的结果公布出来
本次集成是基于之前已经搭建好的SpringMVC+mybatis+shiro的基础上进行的,看似很简单的集成,但是由于jar包冲突,搞了好久,牺牲周六休息时间奉上结果
代码文章末尾会给出下载地址的,请大家不用担心,这些都是我搭建的,还不是很完善,要用于商业项目请修改完善。
步骤:
① 首先在 http://cxf.apache.org/download.html 下载最新版本的CXF,我下载的是3.1.6
② 由于不maven项目,所以拷贝下载的cxf lib目录下的所有包到项目的lib路径下。(我在这里尝试一个个添加,后来jar包冲突了,改天优化下,找出最精简的jar包)
③ 写接口文件和接口的实现文件
接口文件如下,需要注意的是,接口文件上要添加@WebService注解,否则待会儿接口发布后,有这个服务,却没有可供调用的接口方法(自己各种条件下的尝试,不对请拍砖)
package com.xiaochangwei.web.service; import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style; @WebService
@SOAPBinding(style = Style.RPC)
public interface WebserviceTest { public String getUserByName(@WebParam(name = "username") String username); public void setUser(String username); public boolean getuser(String name, String password); public boolean test3();
}
接口实现类如下,经测试,接口实现类不需要添加@WebService注解,当然添加了也没报错
package com.xiaochangwei.web.service.impl;
import com.xiaochangwei.web.service.WebserviceTest;
public class WebServiceTestImpl implements WebserviceTest {
@Override
public String getUserByName(String username) {
return "Hello:" + username;
}
@Override
public void setUser(String username) {
System.out.println("username:" + username);
}
@Override
public boolean getuser(String name, String password) {
return false;
}
@Override
public boolean test3() {
return false;
}
}
④ 修改web.xml文件,在末尾增加filter配置
<!-- cxf服务启动servlet -->
<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>/webService/*</url-pattern>
</servlet-mapping>
⑤ 在Spring配置文件,默认为applicationContext.xml中增加下列代码,需要注意的是:请加入xsd信息 注意加大加粗的字
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd"> <!-- 引入CXF配置文件,低版本还需引入其他两个文件 -->
<import resource="classpath:META-INF/cxf/cxf.xml" /> <!-- 配置方式1 注意:serviceClass为接口类并非实现类 -->
<jaxws:server serviceClass="com.xiaochangwei.web.service.WebserviceTest" address="/webSerciceTest_service_jaxws"></jaxws:server> <!-- 配置方式2 注意:implementor为接口的具体实现类 -->
<jaxws:endpoint implementor="com.xiaochangwei.web.service.impl.WebServiceTestImpl" address="/webSerciceTest_endpoint" ></jaxws:endpoint>
上面我提供了两种配置方式,请留意注意事项,
serviceClass : 配置的为接口定义类
implementor : 配置的为接口的实现类,且接口实现类上面不需要增加@WebService注解标签
⑥ 启动tomcat并测试,启动时留意控制台可以查看配置是否可供调用。
我的启动日志如下:

可以看到我们以两种方式配置的发布地址都成功了,现在打开浏览器进行测试,请注意后面加上?wsdl

另一个和上面这个一样,就不再截图了。
欢迎共勉,不对请拍砖,谢谢!
源码我近期整理好后上传到网盘再贴上下载地址,整理好后的源码可以直接用于商业项目开发,届时欢迎各位架构师指点下小弟
未整理的源码下载:http://pan.baidu.com/s/1eSuIQxs (请勿用于商业项目,若需使用请完善,整理好的代码近期会更新上去)
下一篇我将发布SpringMVC下,怎么根据别人发布了的webService wsdl来进行调用
ps: wsdl 全称是 web service description language 接口的描述,如果你看到这里还不知道wsdl是什么意思,请受小弟一拜 o(∩_∩)o 哈哈
webService学习之路(二):springMVC集成CXF快速发布webService的更多相关文章
- springMVC集成CXF快速发布webService
本文转载自:http://www.cnblogs.com/xiaochangwei/p/5399507.html 继上一篇webService入门之后,http://www.cnblogs.com/x ...
- WebService学习之旅(一)使用JAX-WS发布WebService
JAX-WS全称Java™ API for XML Web Services,是随着JDK1.6及其后续版本发布的方便Java程序员开发WebService应用的一组API,通常简称为JWS,目前版本 ...
- webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口
webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...
- springMVC集成CXF后调用已知的wsdl接口
本文转载自:https://www.cnblogs.com/xiaochangwei/p/5400303.html 本篇文章将讲解SpringMVC+CXF环境下,怎么调用其他系统通过webServi ...
- WebService 学习之路(一):了解并使用webService
webService主要用于向其他系统提供接口以便调用,系统间可能开发语言等完全不同,根据约定的接口规范,调用者传递相关参数进行接口调用,服务方根据传入的条件进行业务处理并进行结果返回. webSer ...
- springboot 学习之路 3( 集成mybatis )
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- springboot 学习之路 6(集成durid连接池)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- [置顶]
WebService学习总结(3)——使用java JDK开发WebService
一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...
- 使用CXF+Spring发布WebService,启动报错
使用CXF+Spring发布WebService,启动报错,日志如下: 五月 12, 2017 9:01:37 下午 org.apache.tomcat.util.digester.SetProper ...
随机推荐
- CSS 3学习——animation动画
以下内容根据官方文档翻译以及自己的理解整理. 1. 介绍 本方案介绍动画(animations).通过动画,开发者可以将CSS属性值的变化指定为一个随时间变化的关键帧(keyframes)的集合.在 ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- ES5对Array增强的9个API
为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...
- 浅谈我对DDD领域驱动设计的理解
从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...
- .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]
构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...
- 关于微软HttpClient使用,避免踩坑
最近公司对于WebApi的场景使用也越来越加大了,随之而来就是Api的客户端工具我们使用哪个?我们最常用的估计就是HttpClient,在微软类库中命名空间地址:System.Net.Http,是一个 ...
- jQuery.Ajax IE8 无效(CORS)
今天在开发的时候,遇到一个问题,$.get()在 IE8 浏览器不起作用,但 Chrome,Firefox 却是可以的,网上资料很多,最后发现是 IE8 默认不支持 CORS 请求,需要手动开启下: ...
- 马里奥AI实现方式探索 ——神经网络+增强学习
[TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...
- git和pycharm管理代码
首先明白三个概念,服务器代码库,本地代码库,和正在coding的项目. coding完毕后,先通过commit提交到本地代码库,然后通过push再提交server的代码库 git步骤 git c ...
- 设计模式之工厂模式VS抽象工厂
一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...