zoukankan      html  css  js  c++  java
  • 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数据传输到注册中心的信息。这样来讲,有这样一个中介也避通过协议来直接传输庞大数据的缺点。

     

    UDDIhttp://blog.sina.com.cn/s/blog_645f168c0100i9pj.html

     

    axis配置

     

    .配置webservice

     

    1.axis引擎部署到tomcat中。


    axis-1_4webappsaxis文件夹复制到 apache-tomcat-7.0.54-windows-x64apache-tomcat-7.0.54webapps下。


    2.编辑对应的java类到axis中,并重新启动tomcat


    新建jws


    1. publicclass MyWebService{  
    2. publicString sayHello(String x){  
    3. return"helloaxis"+x;                  
    4. }  
    5. }  


    保存到axis根目录


    3.访问对应http://localhost:8080/axis/MyWebService.jws


       Click to see the WSDL,看到MyWebService.jws对应的xml文件。相当于一个反向工程,通常情况下利用这个xml文件即可生成对应的java代码。


    至此webservices环境配置完成



     

    .验证调用

     

    1.导入.jar

    axis-1_4lib下的jar全部导入




    2.client调用


    1. publicstatic void main(String[] args){  
    2. //指明服务所在位置  
    3. Stringurl="http://localhost:8080/axis/MyWebService.jws?wsdl";  
    4. //axis对应服务  
    5. Serviceservice =new Service();  
    6. try{  
    7. //为Call设置服务的位置  
    8. Callcall=(Call)service.createCall();  
    9. call.setTargetEndpointAddress(newURL(url));  
    10. try{  
    11. Stringrs=(String) call.invoke("sayHello", new Object[] {"cfl"});  
    12. System.out.print(rs);  
    13. }catch (AxisFault e) {  
    14. //TODO Auto-generated catch block  
    15. e.printStackTrace();                        }  
    16.    
    17. }catch(ServiceExceptione){  
    18. e.printStackTrace();  
    19. }catch (MalformedURLException e) {  
    20. //TODO Auto-generated catch block  
    21. e.printStackTrace();  
    22. }  
    23. }  


    调式日志

     

    错误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作为异构语言之间共享或者说是交流的一种分布式技术,主要涉及到soapwsdl等技术。wsdl是用来描述服务端调用对象的,soap则是用来传输数据的。另外以stubskeleton来作为中介。另外,从个人角度来讲分布式与远程调用还是不一样的,应该讲Webservices是远程调用的一种解决方案。文中是一个小的不能再小的demo,原理如此,实际运用还需要再做研究。


            axis的另外几种实现:http://www.cnblogs.com/mingzi/archive/2009/03/22/1419120.html

     

  • 相关阅读:
    liunx 用户切换 su sudo
    tomcat 虚拟目录
    如何用vue封装一个防用户删除的平铺页面的水印组件
    webpack入门学习手记(一)
    理解跨域及常用解决方案
    封装一个优雅的element ui表格组件
    使用Koa.js离不开这十个中间件
    深入理解let和var的区别
    编辑器IDE之VSCode
    WTF!! Vue数组splice方法无法正常工作
  • 原文地址:https://www.cnblogs.com/sharpest/p/7856194.html
Copyright © 2011-2022 走看看