WebService远程调用技术
1、---------------------------------介绍--------------------------------------------------
(1)远程调用:一个系统远程调用另一个系统的服务,已获取远程系统的业务数据。
(2)为什么使用:基于安全性的考虑,一般企业不会开放自己的数据库,只能使用远程调用技术。

2----------------------- Webservice是如何实现远程调用?三要素在webservice的作用?-----------------------------------
(1)Webservice原理:webservice是一种使用http传输的SOAP协议的数据的远程调用技术。
(2) WSDL作用:webservice服务端的使用说明书。(Web Service Description Language)
(3)SOAP作用:规范XML标签。
(4) UDDI:提供webservice服务端的搜索和注册功能。
注意事项:
- 开发webservice的应用需要开发客户端和服务端
- 发客户端需要参考webservice服务端的使用说明书(WSDL)

3----------------------------Webservice入门程序--------------------------------------------------
(1) 服务端
第一步:创建SEI(Service Endpoint Interface)接口,本质就是Java接口
public interface WeatherInterface {
public String queryWeather(String Name);
}
l 第二步:创建SEI实现类
- 在类上加入注解:@WebService
- 该注解表示该类是一个webservice的服务类,要发布该类下public方法
@WebService
public class WeatherInterfaceImpl implements WeatherInterface {
@Override
public String queryWeather(String Name) {
System.out.println("from client..."+Name);
String weather = "晴";
return weather;
}
}
l 第三步:发布服务
- 用Endpoint类的publish方法发布服务
- 方法publish两个参数:1.服务地址;2.服务实现类的实现
public class WeatherServer {
public static void main(String[] args) {
//用Endpoint类的publish方法发布服务
//端口号建议不要太短,容易被系统占用;不要太长,太长不支持
Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());
}
}
l第四步:测试服务是否发布成功,通过阅读服务端的使用说明书,确定关键元素存在(类/方法/参数等),表示服务发布成功
- WSDL地址规则:服务地址+?wsdl
- WSDL地址的阅读方式:从下往上找到service标签,确定binding属性
注意:
发布SOAP1.2服务端
l第一步:在实现类上加入如下注解
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
l第二步:引入第三方插件的jar包(jaxws-ri-2.2.8)
第三步:重新启动服务端
(2)客户端(好几种方法实现)
开发步骤:
第一步:wsimport命令生成客户端代码。
wsimport -s . http://127.0.0.1:12345/weather?wsdl --------------------------如果你的开发工具是IDEA可以直接使用工具,里面有,可以百度一下。
第二步:创建服务视图,服务视图名的类从service标签的name属性获取
第三步:通过服务视图获取对应服务实现类的实例,服务实现类的名称从portType的name属性获取
第四步:调用查询方法,方法名从operation下的name属性获取
public class WeatherClient {
public static void main(String[] args) {
//创建服务视图
WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();
//获取服务实现类的实例
String weather = weatherInterfaceImpl.queryWeather("北京");
System.out.println(weather);
}
}
5-------------------------- Webservice优缺点--------------------------
优点:
- 跨越防火墙,使用http协议,http协议的默认端口是80,防火墙默认是不拦截80端口
- 跨平台,使用http和XML,这两个协议都是跨平台的
- Webservice支持面向对象编程
缺点:
- Webservice使用XML标签传输数据,发送数据时XML标签也必须发送,标签又要遵循SOAP协议,随着SOAP协议的完善,标签越来越多,传输效率下降,性能差
6----------------------------使用------------------------------------
适用场景:
- 发布一个服务,客户端类型未知,不考虑性能,建议使用webservice
- 服务端已确定使用webservice,客户端无法更改
不适用场景:
- 考虑性能时不建议使用webservice
WebService远程调用技术的更多相关文章
- C#远程调用技术WebService葵花宝典
一.课程介绍 直接开门见山吧,在学习之前阿笨想问大家一句,关于WebService远程过程调用技术(RPC) 你真的会了吗?不要跟老夫扯什么WebService技术已经过时,如果你的内心有在偷偷告诉你 ...
- C#远程调用技术WebService修炼手册
一.课程介绍 一位伟大的讲师曾经说过一句话:事物存在即合理!意思就是说:任何存在的事物都有其存在的原因,存在的一切事物都可以找到其存在的理由,我们应当把焦点放在因果关联的本质上.所以在本次分享课开课之 ...
- Spring远程调用技术<2>-Hessian和Burlap
上篇谈到RMI技术,加上Spring的封装,用起来很方便,但也有一些限制 这里的Hessian和Burlap解决了上篇提到的限制,因为他们是基于http的轻量级远程服务. Hessian,和RMI一样 ...
- Spring远程调用技术<1>-RMI
在java中,我们有多种可以使用的远程调用技术 1.远程方法调用(remote method invocation, RMI) 适用场景:不考虑网络限制时(例如防火墙),访问/发布基于java的服务 ...
- Java[2] 分布式服务架构之java远程调用技术浅析(转http://www.uml.org.cn/zjjs/201208011.asp)
转自:http://www.uml.org.cn/zjjs/201208011.asp 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如: ...
- WebService远程调用(命令行调用)
远程调用webservice 方法, 通过wsdl命令,生成webservice 对应asmx 文件的对应类(cs文件),然后将此cs文件引用到当前项目中,项目其他地方需要调用webservice方法 ...
- Spring远程调用技术<3>-Spring的HTTP Invoker
前面提到RMI使用java标准的对象序列化机制,但是很难穿透防火墙. 另一方面,Hessian和Burlap能很好地穿透防火墙,但是使用私有的对象序列化机制. Spring提供的http invke ...
- WebService远程调用(代码调用)
在做多个系统集成的时候,由于各系统厂商采用不同的架构,在项目实施前期,各业务对业务理解不够深入,系统接口可能会有较多变化, 在此背景下,动态调用webserivce就变得灵活了,降低了系统集成的耦合度 ...
- WebService与RMI(远程调用方式实现系统间通信)
前言 本文是<分布式java应用基础与实践>读书笔记:另外参考了此博客,感觉讲的挺好的,尤其是其中如下内容: 另外,消息方式实现系统间通信本文不涉及.RMI则只采用spring RMI框架 ...
随机推荐
- windos 开启openssl
前面我使用的是wampserver百度提示的软件,然后我卸载了,自己重新再官网上下载了一个比较新的版本,然后我按照的时候用默认路径,他的的都不用怎么配置,新版本都给你弄好了. 低版本的要在httped ...
- Thymeleaf使用bootstrap及其bootstrap相关插件(二)
接上文http://www.cnblogs.com/conswin/p/7929772.html 接下来bootstrap-datepicker的简单使用. 1.引入添加js 和 css 2.然后是h ...
- PHP 进阶之路 - 深入理解 FastCGI 协议以及在 PHP 中的实现
在讨论 FastCGI 之前,不得不说传统的 CGI 的工作原理,同时应该大概了解 CGI 1.1 协议 传统 CGI 工作原理分析 客户端访问某个 URL 地址之后,通过 GET/POST/PUT ...
- js正则、js全选、反选、全不选、ajax批删
<button onclick="fun1()">全选</button><button onclick="fun2()">全 ...
- 判断runtime是否运行在docker中及从docker中获取宿主机的ip信息
1.判断运行时环境是否运行在docker中 参考:How to determine if a process runs inside lxc/Docker? 确定进程是否在LXC/Docker中运行? ...
- Visual Studio references中的package找不到
1. 把solution里面所有project的.net版本设成一样的 2. ERROR: This project references NuGet package(s) that are miss ...
- 一、J2EE
一.HTTP协议中的响应代码 响应代码从1xx--5xx一共有41中.常见的 404:表示访问的页面不存在.这表示一个浏览器的错误,就是服务端没有提供这个服务,你却去访问.这个锅要算在浏览器头上,而不 ...
- const 内联 枚举 宏
const 常量 程序运行时在常量表中,系统为它分配内存,在堆栈分配了空间:const常量有数据类型:语句末有分号:有类型检查:可以限制范围 //将所有不希望改变的变量加const修饰 const ...
- Java中关键字this、super的含义及使用
Java语言中this的含义及作用: 关键字this用来指向当前实例对象(内存里正在运行的哪个实例对象),它的另一作用是用来区分对象的成员变量与方法的形参. 关键字super指的是当前对象里边的父对象 ...
- Windows添加用户和组命令
查看当前存在用户: net user 查看当前用户组: net localgroup 添加用户(以添加用户ls密码abcd1234为例): net user ls abcd1234 /add 添加用户 ...