axis实现webservices分布式通信
分布式通信原理
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
最新文章
- Cannot attach the file ‘{0}' as database '{1}'
- python之装饰器
- UITextView限制输入文字
- markdown语法学习笔记
- [Appium] 使用Appium过程中遇到的各种坑
- spring bean实例化方式
- 【spring 5】AOP:spring中对于AOP的的实现
- Discuz X3.2 分区 gid 完美伪静态方法 Apache/Nginx
- Replication in Kafka
- [转]如何下载tizen源码(图文教程)?
- hdu 1715 大菲波数(高精度数)
- HTML Imports
- 设置tableWidget->;verticalScrollBar()的属性
- Oracle EBS-SQL (WIP-15):检查车间任务物料未发数量与现有量对照.sql
- [转]组合数取模 Lucas定理
- C# 登录 存Session ,cookie并且验证只能一个人登录以及清session并且Cache
- 激活效能,CODING 敏捷研发模块上线
- Collections of Zujin Zhang's Published works
- 【CF1141E】Superhero Battle
- RESTful restful api Representational State Transfer
热门文章
- flask 初始
- 通过UDP建立TCP连接
- 小小的IP,大大的耦合,你痛过吗?
- Java——Spring注解
- 设计模式——“signleton”
- JS高级——Object.prototype成员
- MyBatis入门3_mapper.xml优化(parameterType简写_NameSpace简写_sql片段_特殊字符处理)_动态SQL
- HDU_1028_Ignatius and the Princess III_(母函数,dp)
- Android之Fragment的优点和作用
- jquery 对 table 的操作