10.axis实现webservices分布式通信
转自:https://www.aliyun.com/jiaocheng/310112.html
分布式通信原理
基本原理:stub和skeleton作为客户端和服务端传输的中介,stub和skeleton也是编码和解码的核心。
Wsdl :
Webservices描述文件;xml定义的一套Webservices标准,描述服务端对应方法,参数以及返回值。可根据配置生成对应操作类。
其他常见的webservices实现
Corba
相对与webservices.编程复杂,而传输快。
UDDI
简单来讲,uddi中主要还是利用注册中心。服务端通过注册中心发送数据给对应的client,顺便告知对应的client数据传输到注册中心的信息。这样来讲,有这样一个中介也避通过协议来直接传输庞大数据的缺点。
UDDI:http://blog.sina.com.cn/s/blog_645f168c0100i9pj.html
axis配置
一.配置webservice
1.将axis引擎部署到tomcat中。
axis-1_4\webapps\axis文件夹复制到
apache-tomcat-7.0.54-windows-x64\apache-tomcat-7.0.54\webapps下。
2.编辑对应的java类到axis中,并重新启动tomcat
新建jws
- publicclass MyWebService{
- publicString sayHello(String x){
- return"helloaxis"+x;
- }
- }
保存到axis根目录
3.访问对应http://localhost:8080/axis/MyWebService.jws
Click to see the WSDL,看到MyWebService.jws对应的xml文件。相当于一个反向工程,通常情况下利用这个xml文件即可生成对应的java代码。
至此webservices环境配置完成
二.验证调用
1.导入.jar
\axis-1_4\lib下的jar全部导入
2.client调用
- publicstatic void main(String[] args){
- //指明服务所在位置
- Stringurl="http://localhost:8080/axis/MyWebService.jws?wsdl";
- //axis对应服务
- Serviceservice =new Service();
- try{
- //为Call设置服务的位置
- Callcall=(Call)service.createCall();
- call.setTargetEndpointAddress(newURL(url));
- try{
- Stringrs=(String) call.invoke("sayHello", new Object[] {"cfl"});
- System.out.print(rs);
- }catch (AxisFault e) {
- //TODO Auto-generated catch block
- e.printStackTrace(); }
- }catch(ServiceExceptione){
- e.printStackTrace();
- }catch (MalformedURLException e) {
- //TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
调式日志
错误1.
Error compiling 无法访问 java.lang.Object
错误2.
java.lang.RuntimeException: No compiler found in your classpath!(you may need to add 'tools.jar')
以上两个错误,只需将jdk下的tools.jar以及dt.jar拷贝到axis的lib文件下即可。
警告3.
-Unable to find required classes (javax.activation.DataHandler andjavax.mail.internet.MimeMultipart).
Attachmentsupport is disabled.
将activation.jar、mail.jar导入到axis对应的lib即可,消除警告。
详情操作:http://blog.csdn.net/chastel/article/details/2084076
后序
Webservices作为异构语言之间共享或者说是交流的一种分布式技术,主要涉及到soap、wsdl等技术。wsdl是用来描述服务端调用对象的,soap则是用来传输数据的。另外以stub和skeleton来作为中介。另外,从个人角度来讲分布式与远程调用还是不一样的,应该讲Webservices是远程调用的一种解决方案。文中是一个小的不能再小的demo,原理如此,实际运用还需要再做研究。
axis的另外几种实现:http://www.cnblogs.com/mingzi/archive/2009/03/22/1419120.html
10.axis实现webservices分布式通信的更多相关文章
- axis实现webservices分布式通信
分布式通信原理 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2ZsMjAxMjEzMTQ=/font/5a6L5L2T/fontsize/400/fil ...
- 4.7 ROS分布式通信
4.7 ROS分布式通信 ROS是一个分布式计算环境.一个运行中的ROS系统可以包含分布在多台计算机上多个节点.根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信. 因此,ROS对网络配置 ...
- Ubuntu 14.10 下安装伪分布式hdoop 2.5.0
折腾了一天,其间配置SSH时候出现了问题,误删了ssh-keygen相关文件,导致配置SSH彻底萎了,又重装了系统.... 采用伪分布式模式,即hadoop将所有进程运行于同一台主机上,但此时Hado ...
- 【Win 10 应用开发】TCP通信过程
基于TCP协议的通信,估计大伙儿都不陌生的,以前玩.net或玩C++的时候应该玩得很多吧.现在老周简单介绍一下在RT中如何用. TCP是基于连接的,所以,肯定有一方是监听者,通常称服务端或服务器,它负 ...
- Vuejs——(10)组件——父子组件通信
版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 本篇资料来于官方文档: http://cn.vuejs.org/guide/components ...
- Ubuntu 14.10 下安装伪分布式hive-0.14.0
本地独立模式,MySQL作为元数据库 1 安装环境准备 1.1 安装JDK,在安装hadoop时候已经安装了,参考http://www.cnblogs.com/liuchangchun/p/40972 ...
- Ubuntu 14.10 下安装伪分布式hbase 0.99.0
HBase 安装分为:单击模式,伪分布式,完全分布式,在单机模式中,HBase使用本地文件系统而不是HDFS ,所有的服务和zooKeeper都运作在一个JVM中.本文是安装的伪分布式. 安装步骤如下 ...
- 分布式通信框架RMI
1.RPC概念: Remote procedure call protocal,远程过程调用协议,一般用来实现部署在不同机器上的系统之间的方法调用, 使得程序能够像访问本地系统资源一样,通过网络传输去 ...
- 分布式通信-tcp/ip 广播
服务端 /** * 广播 */ public class MulticastServer { public static void main(String[] args) { try { //地址是2 ...
随机推荐
- 查询目标的ip地址和详细地理信息(多种方法)
不多说,直接上干货! 至于这里怎FQ,很简单,请见我下面的博客! kali 2.0安装 lantern(成功FQ) shadowsocks(简称SSFQ软件)步骤详解 FQ软件lantern-inst ...
- 使用 Spring HATEOAS 开发 REST 服务--转
原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-SpringHATEOAS/index.html?ca=drs-&utm_source ...
- webpack的理解
webpack是一个模块打包工具,你可以使用webpack管理你的模块依赖,并编译输出模块们所需要的静态文件.它能够很好的管理.打包Web开发中所用到的HTML.Javascript.CSS以及各种静 ...
- yii2.0缓存篇之片段缓存
片段缓存指的是缓存页面内容中的某个片段.默认缓存 60秒. return $this->renderPartial("ca"); ...
- python shutil 模块 的剪切文件函数 shutil.movemove(src, dst),换用 os.rename(sourceFile, targetFile)
Google 一搜python 剪切文件,出来shutil 这模块,网上很多人也跟疯说shutil.move(src, dst)就是用来剪切文件的,结果一试,剪切毛线,文件都复制到另一个文件夹了,源文 ...
- perl JSON模块使用
简介: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于JavaScript(Standard ECMA-262 3rd Edition - De ...
- 用Google Chrome 浏览器打开Unity打包的WebGL
方法一: 直接build and run 方法二: 步骤: 1.打开浏览器的属性 2.在目标的位置添加--allow-file-access-from-files, 注意--allow-file-ac ...
- unity调用Android的两种方式:其二,调用aar包
上一篇我们讲了unity如何调用jar包 http://www.cnblogs.com/Jason-c/p/6743224.html, 现在我们介绍一下怎么生成aar包和unity怎么调用aar 一. ...
- 一 梳理 从 HDFS 到 MR。
MapReduce 不仅仅是一个工具,更是一个框架.我们必须拿问题解决方案去适配框架的 map 和 reduce 过程 很多情况下,需要关注 MapReduce 作业所需要的系统资源,尤其是集 ...
- openGl超级宝典学习笔记 (2) 7个主要的几何图元
点(GL_POINTS): 点总是正方形的像素,默认情况下,点的大小不受透视除法影响. 即无论与视点的距离怎样,它的大小都不改变.为了获得圆点.必须在抗锯齿模式下绘制点. 能够用glPointSize ...