>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23102 个阅读者 刷新本主题
 * 贴子主题:  spring整合WebService入门详解 回复文章 点赞(0)  收藏  
作者:日月光华    发表时间:2020-07-05 00:26:32     消息  查看  搜索  好友  邮件  复制  引用

前言

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的包,如下图:
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
这里有两个主要类

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则是我们需要访问的地址。
之后我们运行项目输入该地址:[url]http://127.0.0.1:8080/ssm/webservice/HelloWorld?wsdl如果出现如下界面:
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
则说明我们的webservice发布成功了。[/url]
接下来只需要通过客户端调用这个接口即可获得返回结果了。

总结

以上就是一个简单的webservice入门实例,更多的关于CXF拦截器,客户端调用就没有做过多介绍,后续有时间的话再接着更新。
————————————————
本文转自:https://blog.csdn.net/zty1317313805/article/details/80254751


程序猿的技术大观园:www.javathinker.net

  Java面向对象编程-->图形用户界面(下)
  JavaWeb开发-->Web运作原理(Ⅱ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->通过JDBC API访问数据库
  精通Spring-->绑定CSS样式
  Vue3开发-->组合(Composition)API
  Marshalling在Netty中的使用
  VSCode插件的高级用法
  面试官:Mybatis里的设计模式有哪些?脱口而出8种
  循序渐进,阿里架构师看完都赞叹的Redis分布式锁原理分析
  微服务架构模型
  @Configuration注解的用法
  Spring MVC记录日志的三种方式
  Spring配置中bean元素的id和name属性的区别
  Spring MVC处理静态资源文件的方式
  @SessionAttributes的用法
  聊聊Spring Cloud版本的那些事儿
  探讨通过Feign配合Hystrix进行调用时异常的处理
  Java软件架构设计七大原则
  网红框架SpringBoot2.x之定制参数浅析
  网红框架SpringBoot2.x之定制参数浅析
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。