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 ...
随机推荐
- jsLittle源码封装对象合并
JSLi.extend = JSLi.fn.extend = function () { var options, name, src, copy, target = arguments[0],i = ...
- CF817F MEX Queries(线段树上二分)
题意 维护一个01串,一开始全部都是0 3种操作 1.把一个区间都变为1 2.把一个区间都变为0 3.把一个区间的所有数字翻转过来 每次操作完成之后询问区间最小的0的位置 l,r<=10^18 ...
- [HNOI2018]爆零记
Day 0 完全不知道做什么. 打了一个splay板子,还没调出来emmmmm 不想做题目,最后做的一题是[HNOI2016]的超(sha)难(bi)题网络. 当我希望省选能出一下树剖时,旁边的大佬跟 ...
- 对照 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 假设也能添加个prepareForSegue回调就好了
对照 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 假设也能添加个prepareForSegue回调就好了 太阳火神的漂亮人生 (http:// ...
- Android程序猿自己动手制作.9.png图片
1:怎样制作9.png图片素材: 打开SDK工具文件夹下: draw9patch.zip 解压执行draw9patch.bat.有的直接搜索会有:draw9patch.bat. 双击执行后,例如以下 ...
- HMACSHA256 Class
https://msdn.microsoft.com/en-us/library/system.security.cryptography.hmacsha256(v=vs.110).aspx Comp ...
- 26.angularJS $routeProvider
转自:https://www.cnblogs.com/best/tag/Angular/ O'Reilly书上的伪代码 var someModule = angular.module('someMod ...
- POJ 1191 记忆化搜索
(我是不会告诉你我是抄的http://www.cnblogs.com/scau20110726/archive/2013/02/27/2936050.html这个人的) 一开始没有想到要化一下方差的式 ...
- Gym - 100685F Flood BFS
Gym - 100685F 题意:n个水池之间流水,溢出多少流出多少,多个流出通道的话平均分配,给你每个水池中的水量和容量,问到最后目标水池中水量. 思路:直接用队列扩展,不过这里有一个优化,就是统计 ...
- Python(四) 分支、循环、条件与枚举
一.什么是表达式 表达式(Expression)是运算符(operator)和操作数(operand)所构成的序列 二.表达式的优先级 三.表达式优先级练习 优先级同级 从左往右计算 1 or 2 a ...