不同公司的系统交互,用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. CF1010C Border 题解

    题目传送门 前置知识 最大公约数 | 裴蜀定理 简化题意 给定一个长度为 \(n\) 的序列 \(a\),求 \((\sum\limits_{i=1}^{n}d_ia_i) \bmod k\) 一共会 ...

  2. ES6学习 第一章 let 和 const 命令

    前言: 最近开始看阮一峰老师的<ECMAScript 6 入门>(以下简称原文)学习ECMAScript 6(下文简称ES6)的知识,整理出一些知识点加上我的理解来做成文章笔记.按照章节为 ...

  3. Python异步编程原理篇之IO多路复用模块selector

    selector 简介 selector 是一个实现了IO复用模型的python包,实现了IO多路复用模型的 select.poll 和 epoll 等函数. 它允许程序同时监听多个文件描述符(例如套 ...

  4. Vue中虚拟DOM的理解

    Vue中虚拟DOM的理解 Virtual DOM是一棵以JavaScript对象作为基础的树,每一个节点称为VNode,用对象属性来描述节点,实际上它是一层对真实DOM的抽象,最终可以通过渲染操作使这 ...

  5. Spring Security实现JDBC用户登录认证

    在搭建博客后端服务框架时,我采用邮件注册+Spring Security登录认证方式,结合mysql数据库,给大家展示下具体是怎么整合的. 本篇是基于上一篇:spring boot实现邮箱验证码注册 ...

  6. win32-ReadProcessMemory在x86和x64下运行

    #include <iostream> #include <Windows.h> #include <winternl.h> #include <tchar. ...

  7. 项目实战:Qt+Android模拟操作器(模拟操作app,打开,点击,输入,获取验证码等等)

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109313803各位读者,知识无穷而人力有穷,要 ...

  8. Gitlab的部署

    # Gitlab sudo docker run --detach \   --hostname gitlab.example.com \   --publish 443:443 --publish ...

  9. Java是解释型语言么

    基础概念 JVM虚拟机会将.java类文件编译成.class文件--字节码文件,这大家都知道. 代码运行时还需要将.class字节码文件翻译成机器码才能执行. 解释执行:将编译好的字节码一行一行地翻译 ...

  10. Javascript之Object、Array

    Object.keys 对象的键转化为数组 Object.values 对象的属性值转化为数组 Object.assign 对象的合并   Array.from() 伪数组对象的属性值转化为数组.类似 ...