不同公司的系统交互,用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. Python 字典与集合

    字典(Dictionary) 字典介绍 字典是"键值对"的无序可变序列,字典中的每个元素都是一个"键值对",包含:"键对象"和"值 ...

  2. Java并发编程-CompletableFuture(上)

    大家好,我是小高先生,这篇文章我将和大家一起学习Java并发编程中很重要的一个类-CompletableFuture. 在Java的并发编程领域,Future接口一直扮演着关键的角色,它定义了一组与异 ...

  3. 使用clipboard插件结合layui实现的一键复制按钮

    说明 之前开发了个基金分析的网页,主要是方便几个朋友买卖基金做个参考.这里面基金代码是存储在浏览器cookie中的,也就是说假如我换了浏览器就没法查了,最方便的就是一键复制代码粘贴到另外一个浏览器中一 ...

  4. Java集合框架学习(十三) Collections类详解

    Collections类介绍 这个类操作或返回集合的专有静态方法. 它包含多态算法,利用wrappers(封装器)返回指定集合类型的新集合,以及其他一些零散功能. 如果该类的方法引用的集合或类对象为n ...

  5. 「源码分析」CopyOnWriteArrayList 中的隐藏的知识,你Get了吗?

    点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 前言 ...

  6. C++ 多线程的错误和如何避免(2)

    试图 join 一个已经 detach 的线程 如果你已经在某个地方分离了线程,那你不可以在主线程再次 join,这是一个明显的错误 比如: #include <iostream> #in ...

  7. IDEA git分支回退指定的历史版本

    https://blog.csdn.net/woshi1226a/article/details/86664159

  8. Gin框架使用jwt-go配合中间件认证

    参考文档 // 文档 https://github.com/golang-jwt/jwt https://pkg.go.dev/github.com/golang-jwt/jwt@v3.2.2+inc ...

  9. 第一百一十二篇: JS数组Array(一)数组基本用法

    好家伙,   1.数组 Array应该就是ECMAScript中最常用的类型了.ECMAScript数组跟其他编程语言的数组有很大区别. 跟其他语言中的数组一样,ECMAScript 数组也是一组有序 ...

  10. Unity3D之OnTriggerEnter和OnCollisionEnter

    OnCollisionEnter方法要求碰撞的发起方必须拥有刚体,而被碰撞方有没有刚体并不重要; OnTriggerEnter方法则对此没有要求,只需要碰撞双方有一个具有刚体即可触发,当有物体勾选is ...