zoukankan      html  css  js  c++  java
  • Axis 之 Dynamic Proxy方式(WSDD方式)

    http://hi.baidu.com/dreamsun2008/blog/item/f14c9bef1023092f2df53438.html

    Axis支持三种web service的部署和开发,分别为:
      1、Dynamic Invocation Interface ( DII)
      2、Dynamic Proxy方式
      3、Stubs方式

     二、Dynamic Proxy方式(wsdd)
    动态代理就是通过wsdd来描述Web服务,而不是直接访问jws,前面说过jws是不支持包的,而且运行也不稳定,有时候可以访问有时候就不可以,所以不推荐此种方法,wsdd和wsdl的区别在于前者只描述Web服务和操作方法以及传输方式,它相对于wsdl要简单的多,更易被人读懂。

    1.将myService放入com.service包下,这就是WSDD的好处,它不像DII不能建包
    package com.service;
    public class MyService {

    public String sayHello(String name){
       return "Welcome to you, " + name;
    }
    }

    在WEB-INF下新建一个server-config.wsdd文件,代码如下:
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>    
       <service name="myService" provider="java:RPC">
            <parameter name="className" value="com.service.MyService"/>
            <parameter name="allowedMethods" value="sayHello"/> <!--*代表所有方法-->
        </service>
    <transport name="http">
    <requestFlow>
        <handler type="URLMapper"/>
    </requestFlow>
    </transport>
    </deployment>
    这就是WSDD的全部内容,它描述一个Web Service发布

    2.测试发布的myService,重启Tomcat,在浏览器输入
    http://localhost:8080/AxisTest/servlet/AxisServlet

    3.客户端
    package com.client;

    import java.net.MalformedURLException;
    import java.rmi.RemoteException;

    import javax.xml.rpc.ParameterMode;
    import javax.xml.rpc.ServiceException;

    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.encoding.XMLType;

    public class MyServiceClient {

    public static void main(String[] args) throws ServiceException, MalformedURLException, RemoteException {
      
       String endpoint="http://localhost:8080/AxisTest/services/myService";
            String name=" 张三";
            Service service = new Service();
            Call call = (Call) service.createCall();
            
            call.setTargetEndpointAddress(new java.net.URL(endpoint));                      
            call.addParameter("param1",XMLType.XSD_STRING,ParameterMode.IN);
            call.setOperationName( "sayHello" );
            call.setReturnType( XMLType.XSD_STRING );
            String ret = (String) call.invoke( new Object[] { name } );
            System.out.println("返回结果:" + ret);   
    }

    }

    注意上述方法和jws方式唯一的不同就在于endpoint的引用方式不同,一个是直接引用jws文件,一个是引用一个wsdd描述的服务。

  • 相关阅读:
    eclipse使用egit提交代码报错
    JMeter使用代理录制脚本
    Jenkins搭建Windows slave 环境
    nmon在线安装及使用
    netstat 查看连接数
    Node.js安装及环境配置之Windows篇(转:https://www.cnblogs.com/zhouyu2017/p/6485265.html)
    HTTP状态码图示
    高并发带来的重复提交问题解决方案
    redis 主从备份自动切换+java代码实现类
    转:Redis 缓存策略
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/1686109.html
Copyright © 2011-2022 走看看