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 ...
随机推荐
- 2013亚洲区域赛长沙站 ZOJ 3732 Graph Reconstruction
题目链接 Graph Reconstruction 题意 给你无向图每个点的度数, 问是否存在唯一解, 存在输出唯一解, 多解输出两个, 无解输出IMPOSSIBLE 思路 这里用到了 Havel-H ...
- linux中不同颜色的文件代表什么不同的类型
linux 文件颜色的含义,蓝色代表目录,绿色代表可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其他文件,红色闪烁表示链接的文件有问题了,黄色表示设备文件.蓝色文件----------目. ...
- vuejs v-model
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 昼猫笔记 JavaScript -- 异步执行 | 定时器真的定时执行?
本篇主要内容:异步.定时器引发的思考 预计阅读时间:8分钟 了解 我们都知道在js中定时器有两种 setInterval() . setTimeout() setInterval() :按 ...
- 用树链剖分来写LCA
当两个点在一条链上,它们的LCA就是深度较小的那个点. 于是这种树链剖分写LCA的思想就是把要求的两个点想办法靠到一条链上. 而且要靠到尽量更优的一条链上(重链). 做法: 预处理出每棵树上的重链(s ...
- HTML学习----------DAY2第五节
属性为 HTML 元素提供附加信息. HTML 属性 HTML 标签可以拥有属性.属性提供了有关 HTML 元素的更多的信息. 属性总是以名称/值对的形式出现,比如:name="value& ...
- C++学习笔记31,指向引用的指针(3)
我们来看一个简单的指向引用的指针的样例. #include <iostream> using namespace std; int main(){ int x=10; int y=20; ...
- js的一些常用判断小实验
下面是小实验案例 // 0 if(undefined) { console.log('1'); } else { console.log('0'); } // 0 if(null) { console ...
- codeforces 589A Email Aliases(map)
Description Polycarp has quite recently learned about email aliases. Of course, he used to suspect t ...
- jquery.base64.js
(function($) { $.base64 = function(options) { var defaults = { data:"", type:0, unicode:tr ...