不同公司的系统交互,用webservice可以起到安全的作用。
Webservice使用方法如下:
 
客户端:
这个是要打成jar包,给别人的用的,里面只是接口,没有实现。
 
用Webservice,举例两个包,
一个是Axis2,Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟。
一个是Apche CXF,CXF开发webservice也是比较方便和简单的,它和spring的集成可以说是非常地好。
建项目,导包(下面例子项目用的CXF),写要暴露给外部的service接口,再写webservicesClient.xml,如:xxxService.java
 @WebService

public interface xxxService{

  //写接口名和接收的vo类
  public xxxResDTO getXXX(xxxReqDTO xxxreqdto);

}
 
webservicesClient.xml里,每个service接口对应一个jaxws,里面是方法名,动态的地址,和一个类似aop的拦截(打印日志的吧)
<jaxws:client id = "xxxclient"
serviceClass ="com.xxx.xxxService" --上面xxxService.java的路径
address= "发布的ip/xxx/xxxSe对外rvice?wsdl" --暴露给大家的访问地址 >
<jaxws:outInterceptors>
<ref bean = "xxxInterceptor" />
</jaxws:outInterceptors>
</jaxws:client>
其实这个jar里就三个内容,出参入参DTO,service接口,xml文件。三个都写好后,把项目打成jar包,给别人用,别人怎么用呢?如下
 
别人拿到jar包,只要根据jar包里webservicesClient.xml的jaxws:client id的内容,注入实例,然后用实例去点方法就能调到方法了。如下
@Resource
private xxxService xxxClient; //上面那个xxxService的实现
public xxx  xxxbiz {

  //自己的业务
  public xxx bizXXX(){
xxxDTO xxxdto = new xxxDTO();
xxxdto = xxxClient.getXXX(.....); //这里就调用实例的那个方法了
} }
 
服务端:
这是那个jar包所有service接口的具体实现方法。
 
这个项目也引上面那个client的包,然后直接实现,如下
@WebService
public class xxxServiceImpl implentments xxxService{
@Override
public xxxResDTO getxxx(){
//写这个webservice接口的实现
} }
然后在项目的resources->config->里加个配置文件webservicesContext.xml即可。
 
webservicesContext.xml里面四个东西,比客户端多了个实现类
<jaxws:endpoint id="xxxService"
implementor="xxxServiceImpl"
implementorClass = "com.xxx.xxxService" //类路径
address="/xxxService" > //对外路径 <jaxws:inTerceptors>
<ref bean="xxxInterceptor">
</jaxws:inTerceptors> </jaxws:endpoint>
下面还有个aop
<aop:config>
<aop:aspect ef ="xxxadvice">
<aop:around method="serviceInvoke"
pointcut="execution(*.*(..))" /> //所有路径的所有方法都拦截
<aop:aspect>
步骤如上。
但是,别人用客户端client的jar包时,它是如何触发服务端的实现方法呢?
答:client的xml文件里,配有address,通过那个地址,找到了服务端项目,
对了,服务端项目的web.xml也要配置一下,如下:
 
<servlet>
<servlet-name>CXFServlet</servlet-name>
...
<servlet-mapping>...
</servlet>
 
这样,只要七步,
Client端写DTO、service、xml,然后打包,
服务端写实现、xml、配web.xml。
就完成了一个webservice项目。
 

快速上手系列:webservice的更多相关文章

  1. 快速上手系列-C语言之指针篇(一)

    快速上手系列-C语言之指针篇(一) 浊酒敬风尘 发布时间:18-06-2108:29 指针的灵活运用使得c语言更加强大,指针是C语言中十分重要的部分,可以说指针是C语言的灵魂.当然指针不是万能的,但没 ...

  2. 使用 mongodb 的 Docker Image 快速上手系列 lab

    Docker 主要的概念 Dockerfile => 用來產生 docker image 用的(介紹) Image => 可以用來產生 docker container Container ...

  3. SpringBoot快速上手系列01:入门

    1.环境准备 1.1.Maven安装配置 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. 下载Maven可执行文件 cd /usr/local ...

  4. 【新手】【十分钟上手系列-一】快速开发vue插件

    2018.6.28 在这浮躁的前端娱乐圈,不会三两个新框架都觉得自己不是前端.哦,不是我说的.说到底.原生才是重中之重.加油. vue用了大半年多,一直在用ui库,插件等,没有自己的东西. 想想连个v ...

  5. [Android开发学iOS系列] 快速上手UIKit

    快速上手iOS UIKit UIKit是苹果官方的framework, 其中包含了各种UI组件, window和view, 事件处理, 交互, 动画, 资源管理等基础设施支持. 按照前面的介绍, 用U ...

  6. WPF快速入门系列(8)——MVVM快速入门

    一.引言 在前面介绍了WPF一些核心的内容,其中包括WPF布局.依赖属性.路由事件.绑定.命令.资源样式和模板.然而,在WPF还衍生出了一种很好的编程框架,即WVVM,在Web端开发有MVC,在WPF ...

  7. ESFramework 4.0 快速上手(06) -- Rapid引擎(续)

    <ESFramework 4.0 快速上手>系列介绍的都是如何使用Rapid引擎(快速引擎) -- RapidServerEngine 和 RapidPassiveEngine.其实,大家 ...

  8. ESFramework 4.0 快速上手(01) -- Rapid引擎

    (在阅读该文之前,请先阅读 ESFramework 4.0 概述 ,会对本文的理解更有帮助.) ESFramework/ESPlatform 4.0 的终极目标是为百万级的用户同时在线提供支持,因为强 ...

  9. EF Core 快速上手——创建应用的DbContext

    系列文章 EF Core 快速上手--EF Core 入门 EF Core 快速上手--EF Core的三种主要关系类型 本节导航 定义应用的DbContext 创建DbContext的一个实例 创建 ...

  10. EF Core 快速上手——EF Core的三种主要关系类型

    系列文章 EF Core 快速上手--EF Core 入门 本节导航 三种数据库关系类型建模 Migration方式创建和习修改数据库 定义和创建应用DbContext 将复杂查询拆分为子查询   本 ...

随机推荐

  1. JS leetcode 加一 题解分析

    壹 ❀ 引 今天是刷leetcode的第三天,根据推荐优先刷数据结构相关的卡片,先把数据结构知识体系建立起来,不然就是题目无从下手答案也看不懂的尴尬局面.那么今天的题目是加一,老规矩,先记录自己的解题 ...

  2. 如何查看Spring Boot 默认的数据库连接池类型

    使用的Spring Boot的版本:2.3.4.RELEASE 先给出答案:com.zaxxer.hikari.HikariDataSource 怎么知道的呢? 新建一个Spring boot项目:s ...

  3. STC系列8位MCU在Windows下的开发

    STC系列 MCS-51 8位MCU 简介 STC的8位MCU有89/90/10/11/12/15/8(A/F/G/H)这几个大系列, 都是8051衍生的8位单片机, 每个系列的特点如下 STC89系 ...

  4. USB至串口TTL转接设备及Console线

    USB转串口常见芯片方案 FT232, FTDI(英国) 公认稳定可靠, 传输速率3Mbps, 功能最强, 单芯片内置SPI,TWI,JTAG,GPIO等功能. FT232BM为较早型号, FT232 ...

  5. Python之猜数字游戏

    说明: 本例改编自<Python编程快速上手>.例子很简单我就不多说了 直接上代码,给初学python练手用. 给你6次机会猜对一个预先生成好的1-20之间的整数.覆盖一下知识点: 条件语 ...

  6. zTree如何实现模糊查找实战

    1.说明 最近在研究zTree树控件.过程中涉及到了实现模糊查找结点的功能,特此分享一下. 有关zTree的有关介绍和使用,请访问其官网:zTree -- jQuery 树插件 本文假设你已经比较熟悉 ...

  7. Java判断是否为闰年

    题目: 判断一个输入的整数是否为闰年? 1.需要对输入的数据类型进行验证 2.支持多次输入和结束符号判断,例如输入q代表退出程序. 分析: 闰年的判断规则如下: (1)若某个年份能被4整除但不能被10 ...

  8. webrtc 渲染音频时遇到的问题

    有用户反馈连麦时,直播间会有电流声,后面排查发现是 webrtc 内部播放器渲染音频时,用户的播放设备不支持 48000hz 采样率(我们传输的音频采样率都是 48000hz),导致音频数据受损而出现 ...

  9. win32 - 使用Desktop Duplication API复制桌面图像

    该代码来源于codeproject,经过测试发现,在屏幕处于旋转的情况下捕获的图像是黑色的.暂时没有找到原因. 代码开箱即用, #define WIN32_LEAN_AND_MEAN #include ...

  10. 开源:Taurus.DistributedLock 分布式锁框架,支持 .Net 和 .Net Core 双系列版本

    前言: 在经过漫长的技术沉淀,终于又为 .Net 及 .Net Core 的微服务系列框架贡献当中的一个重要组件. Taurus.DistributedLock is a distributed lo ...