• axis实现webservices分布式通信



    分布式通信原理


     


    基本原理:stub和skeleton作为client和服务端传输的中介,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


    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_4lib下的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作为异构语言之间共享或者说是交流的一种分布式技术,主要涉及到soapwsdl等技术。

    wsdl是用来描写叙述服务端调用对象的,soap则是用来数据传输的。

    另外以stubskeleton来作为中介。另外,从个人角度来讲分布式与远程调用还是不一样的,应该讲Webservices是远程调用的一种解决方式。

    文中是一个小的不能再小的demo。原理如此。实际运用还须要再做研究。


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

     

  • 相关阅读:
    不可变类
    单例类
    二叉树的三种遍历
    先序创建二叉树
    【笔记】 mysql与php的连接以及非select的例子
    今日思考之 20200730:非阻塞(NIO)到底带来了什么改变?
    jdk源码学习之: Object#equals() 和 Object#hashCode()
    异想天开 之 快递行业与高并发、高吞吐
    分享系列 之 BIO NIO AIO
    挖坑:epoll 函数如何能准确知道哪些 FD 是活跃的呢?
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7131028.html
Copyright © 2020-2023  润新知