分布式通信原理


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2ZsMjAxMjEzMTQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

基本原理:stub和skeleton作为client和服务端传输的中介,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文件。相当于一个反向project,通常情况下利用这个xml文件就可以生成相应的java代码。

至此webservices环境配置完毕

二.验证调用

1.导入.jar

\axis-1_4\lib下的jar所有导入

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2ZsMjAxMjEzMTQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

axis实现webservices分布式通信的更多相关文章

  1. 10.axis实现webservices分布式通信

    转自:https://www.aliyun.com/jiaocheng/310112.html 分布式通信原理 基本原理:stub和skeleton作为客户端和服务端传输的中介,stub和skelet ...

  2. 4.7 ROS分布式通信

    4.7 ROS分布式通信 ROS是一个分布式计算环境.一个运行中的ROS系统可以包含分布在多台计算机上多个节点.根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信. 因此,ROS对网络配置 ...

  3. 分布式通信框架RMI

    1.RPC概念: Remote procedure call protocal,远程过程调用协议,一般用来实现部署在不同机器上的系统之间的方法调用, 使得程序能够像访问本地系统资源一样,通过网络传输去 ...

  4. 分布式通信-tcp/ip socket

    Socket通讯的过程 Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受) ...

  5. (八)分布式通信----主机Host

    上节中有谈到的是通信主机(TransportHost),本节中主机(ServiceHost)负责管理服务的生命周期. 项目中将两个主机拆分开,实现不同的功能: 通信主机:用于启动通信监听端口: 生命周 ...

  6. (七)分布式通信----Netty实现NIO通信

    目录 1. 消息监听器 2. 指令执行器 3. 消息发送器 4. 客户端工厂 5. 序列化工具 6. 通信主机 项目文件结构图 通信主机: 1. 消息监听器(黄色框) 这部分由 Netty 实现,Ne ...

  7. 分布式通信-tcp/ip 广播

    服务端 /** * 广播 */ public class MulticastServer { public static void main(String[] args) { try { //地址是2 ...

  8. 分布式通信-tcp/ip 单播

    服务端 public class SingleBroadCastSocketServer { public static void main(String[] args) { ServerSocket ...

  9. (六)分布式通信----MessagePack序列化

    1. .Net Core的序列化方式 1.1 json.Net 常用的工具包,如Newtonsoft.Json, 它是基于json格式的序列化和反序列化的组件 json.net 有以下优点: 侵入性: ...

随机推荐

  1. 【洛谷2904/BZOJ1617】[USACO08MAR]跨河River Crossing(动态规划)

    题目:洛谷2904 分析: 裸dp-- dp方程也不难想: \(dp[i]\)表示运\(i\)头牛需要的最短时间,\(sum[i]\)表示一次运\(i\)头牛(往返)所需的时间,则 \[dp[i]=m ...

  2. windows server 2008 r2 安裝IE11

    https://support.microsoft.com/en-us/help/2847882/prerequisite-updates-for-internet-explorer-11 https ...

  3. 2018.10.9 logstash启动慢的问题解决

    问题描述: 线上部署logstash 启动非常缓慢,达到了10分钟 问题解决 忍无可忍 网上资料基本都是熵过低导致jruby启动缓慢的问题,需要安装haveged 参考https://www.jian ...

  4. HTML和CSS网页开发基础

    一 HTML文档结构 HTML文档结构:<html>.<head>.<title>.<body>构成HTML页面中最基本的元素. HTML常用标记:1. ...

  5. Android 6.0一个完整的native service

     上一篇博客<Android 6.0 如何添加完整的系统服务(app-framework-kernel)>http://www.cnblogs.com/hackfun/p/7418902. ...

  6. MYSQL 使用自定义表变量

    mysql  用户自定义表变量,ENGINE=MyISAM DEFAULT CHARSET=gb2312; 制定编码方式,防止乱码 DROP TABLE IF EXISTS p_temp; creat ...

  7. Forum/viewthread.php代码备份

    <!--{eval $lzthread = DB::fetch_all("SELECT `tid`,`subject` FROM ".DB::table('forum_thr ...

  8. Altium Designer 2017 ActiveRoute使用以及其他技巧

    ActiveRoute 点击右下角PCB->PCB ActiveRoute调出ActiveRoute面板 在设计电路时,有一堆细小的白色线,表示几个脚之间需要连接,按住键盘Alt + 鼠标左键, ...

  9. 取textaera里的值

    jQuery的.val()方法是专门用来获取表单元素值的,而textarea也属于表单元素所以可以直接用.val()方法获取. 不过要注意,由于textarea是个双标记因此.text()或.html ...

  10. uva 10048 Audiophobia UVA - 10048

    题目简介 一个无向正权图,求任意两个节点之间的路径里最短的路径长度. 直接Floyd解决,就是注意要把Floyd的DP式子改一下成 G[i][j]=min(G[i][j],max(G[i][k],G[ ...