前言

webservice这个不知道大家首次接触的时候是怎么理解的,反正我记得我当时第一次接触这个东西的时候以为又是一个XX框架,觉得还挺高大上。然而这一切在之后我使用过后才发现这些全都是YY。
那么webservice到底是什么呢,根据我自己的理解:简单来说就像是一个公开的接口,其他系统不管你是用什么语言来编写的都可以调用这个接口,并可以返回相应的数据给你。就像是现在很多的天气应用,他们肯定不会自己去搞一个气象局之类的部门去监测天气,大多都是直接调用一个天气接口,然后返回天气数据,相关应用就可以将这些信息展示给用户了。
通常来说发布这类接口的应用都是用一两种语言来编写即可,但是调用这个接口应用可能会是各种语言来编写的,为了满足这样的需求webservice出现了。

简单来说webservice就是为了满足以上需求而定义出来的规范。


Spring整合CXF

在Java中实现webservice有多种方法,java本身在jdk1.7之后也对webservice有了默认的实现,但是在我们实际开发中一般还是会使用框架来,比如这里所提到的CXF就有着广泛的应用。
废话我就不多说了,直接讲Spring整合CXF,毕竟现在的JavaEE开发是离不开Spring了。
该项目还是基于之前的SSM进行开发的。

加入maven依赖

第一步肯定是要加入maven依赖:

<!--cxf-->

<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-frontend-jaxws</artifactId>

<version>3.1.6</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-core -->

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-core</artifactId>

<version>3.1.6</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-transports-http -->

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http</artifactId>

<version>3.1.6</version>

</dependency>

web.xml配置

接着我们需要配置一个CXF的servlet:

<!--定义一个cxf的servlet-->

<servlet>

<servlet-name>CXFServlet</servlet-name>

<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>CXFServlet</servlet-name>

<url-pattern>/webservice/*</url-pattern>

</servlet-mapping>

之后只要我们访问webservice/*这个地址就会进入CXF的servlet中。

整合Spring配置

接下来是最重要的一部,用Spring整合CXF:在这之前我有新建一个CXF的包,如下图:
这里有两个主要类

  • HelloWorld接口。
  • 实现HelloWorld接口的HelloWorldImpl类。
    代码如下:
    HelloWorld.java

    package com.crossoverJie.cxf;

    import javax.jws.WebService;

    @WebService

    public interface HelloWorld {

    public String say(String str);

    }

其中就只定义了一个简单的say()方法。
HelloWorldImpl.java

package com.crossoverJie.cxf.impl;

import com.crossoverJie.cxf.HelloWorld;

import org.springframework.stereotype.Component;

import javax.jws.WebService;

@Component("helloWorld")

@WebService

public class HelloWorldImpl implements HelloWorld {

public String say(String str) {

return "Hello"+str;

}

}

这里就是对say()方法的简单实现。
接下来就是整合Spring了,由于需要使用到CXF的标签,所以我们需要添加额外的命名路径如下:

<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:aop="http://www.springframework.org/schema/aop"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:jee="http://www.springframework.org/schema/jee"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:jaxws="http://cxf.apache.org/jaxws"

xsi:schemaLocation="

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.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-servlet.xml"/>

<!-- 自动扫描webService -->

<context:component-scan base-package="com.crossoverJie.cxf" />

<!-- 定义webservice的发布接口 -->

<jaxws:endpoint

implementor="#helloWorld"

address="/HelloWorld"

</beans>

更加具体的配置可以查看官方给出的文档:http://cxf.apache.org/docs/how-do-i-develop-a-service.html。
#helloWorld指的是我们在HelloWorldImpl类中所自定义的名字,/HelloWorld则是我们需要访问的地址。
之后我们运行项目输入该地址:http://127.0.0.1:8080/ssm/webservice/HelloWorld?wsdl如果出现如下界面:
则说明我们的webservice发布成功了。
接下来只需要通过客户端调用这个接口即可获得返回结果了。


总结

以上就是一个简单的webservice入门实例,更多的关于CXF拦截器,客户端调用就没有做过多介绍,后续有时间的话再接着更新。

项目地址:https://github.com/crossoverJie/SSM.git
个人博客地址:http://crossoverjie.top。
GitHub地址:https://github.com/crossoverJie。

spring整合WebService入门详解相关推荐

  1. Spring整合Schedule定时任务详解

    Spring整合Schedule定时任务详解 Spring 定时任务官方网站 一.概述 用Spring,就是为了简单. 但是我还是要总结下java定时任务实现的几种方式. 1.TimerTask,等于 ...

  2. java 消息队列详解_Java消息队列-Spring整合ActiveMq的详解

    本篇文章主要介绍了详解Java消息队列-Spring整合ActiveMq ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.概述 首先和大家一起回顾一下Java 消息服 ...

  3. WebService入门详解

    1.什么是webservice 先来考虑一个问题,如果我们要在自己的程序里面展示天气预报,那怎么弄?正确的做法是我们发送一个请求到一个系统,他会给我们返回来天气情况.这个就是一个webservice. ...

  4. 微服务网关spring cloud gateway入门详解

    1.API网关 API 网关是一个处于应用程序或服务( REST API 接口服务)之前的系统,用来管理授权.访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的 ...

  5. Spring入门详解

    typora-copy-images-to: upload Spring入门详解 Spring框架是Java开发中最常用的框架,功能非常强大 源码下载:Spring Framework jar包.文档 ...

  6. Java Spring框架入门详解教程【多测师_何sir】

    Spring框架入门详解教程 spring概述 spring结构 spring IOC spring DI spring概述 Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多 ...

  7. Spring 快速入门详解

    Spring 入门详解 简介 Spring就是指Spring framework是分层的 Java SE/EE 一站式轻量级开源框架,Spring 框架是全家桶(spring mvc.spring b ...

  8. Mybatis的入门详解

    mybatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为M ...

  9. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔 ...

  10. springboot2整合mysql5_SpringBoot2整合SSM框架详解

    SpringBoot2整合SSM框架详解 发布时间:2019-01-15 21:33, 浏览次数:1218 , 标签: SpringBoot SSM <>开发环境 * 开发工具:Eclip ...

最新文章

  1. stagefright框架概述
  2. centos6.5下安装配置ELK及收集nginx日志
  3. JDBC(11)—数据库连接池
  4. 绥化a货翡翠,拉萨a货翡翠
  5. 在TreeView查找某一节点
  6. 安全方向比路由交换难吗_「网工进阶」路由交换:链路聚合的配置,你都会吗...
  7. SSH框架中怎么使用Hibernate查询一个对象
  8. 【Python爬虫】Re(正则表达式)库入门
  9. MTK 驱动开发(34)---待机功耗调试
  10. 鲜花海报设计没有思路?看这里吧!
  11. HTTP 请求消息头部实例:
  12. 怎么在Mac上重建“聚焦”索引?
  13. php中读取session,php中如何注册和读取Session会话
  14. c++ new操作符(new operator)、operator new、placement new 、operator new[] 及相对应的delete 操作符、operator delete
  15. 软件系统设计-16-架构文档
  16. linux 文本筛选基因,linux – 如何将snps映射到ref基因文件
  17. tensorflow pb模型获得权重wts
  18. 蔡康永:我要的三国就是威力无双。0氪玩家玩了两个礼拜后
  19. Java-按照指定小时分割时间段
  20. 动态规划解决最长公共子序列

热门文章

  1. 热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)
  2. C++厘米和英寸的换算
  3. 这几天阿里云发生故障事件,身为程序员慌得一批……
  4. sprintf左右对齐
  5. 迅为iTOP-4418开发板Android系统网络测速工具iPerf-TCP测试
  6. python tolist()函数
  7. HTTP 415错误
  8. SQL注入之MYSQL注入
  9. 需要在计算机安装msxml版本,Office2010安装需要MSXML版本6.10.1129.0的方法
  10. 51单片机硬件基础知识