zoukankan      html  css  js  c++  java
  • WSDD简单用法

    用wsdd来开发web services

    用wsdd(服务部署描述语言),主要是编写java文件和编写wsdd文件。

    1。编写java文件,最好是定义在某一个包下,否则便以后直接放到\WEB-INF\classes下,有时会出错,原因是在用deploy.wsdd部署时映射不对。然后直接包对应的包放到\WEB-INF\classes中。HelloWorldG.java文件:

    package test.gaolong;
    public class HelloWorldG{
    public String sayHelloG(String name){
    return "HelloG "+name;
    }
    }

    2。编写wsdd文件,根据wsdd文件的规范编写相关文档。例如:(deploy.wsdd)    

     <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><--命名空间-->
    <service name="HelloWorldG" provider="java:RPC"><-服务名-->
    <parameter name="className" value="test.gaolong.HelloWorldG"/><--对应的主类--->
    <parameter name="allowedMethods" value="*"/><---注册相应的方法,如果只有一个方法,可以直接注册方法名--->
    <parameter name="allowedRoles" value="user"/><--定义用户认证--->
    <requestFlow><-用户认证的描述文件-->
    <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
    <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
    </requestFlow>
    </service>
    </deployment>

    3。部署wsdd文件:打开命令口,切换到deploy.wsdd目录下,运行java org.apache.axis.client.AdminClient即可完成部署。这儿可能出错,正确的显示:

    D:\bea\user_projects\domains\mydomain\applications\axis\WEB-INF\classes>java org.apache.axis.client.AdminClient   -p 7001   deploy.wsdd
    Processing file deploy.wsdd
    <Admin>Done processing</Admin>


    当在wsdl中使用deploy.wsdd来部署时,对于服务器是要打开的,而且当服务器的端口不是8080时,采用要求java org.apache.axis.client.AdminClient -p <port> deploy.wsdd 来指定并进行服务部署。

    4。打开server-config.wsdd会发现增加了语句描述:

    <service name="HelloWorldG" provider="java:RPC">
    <requestFlow>
    <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
    <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
    </requestFlow>
    <parameter name="allowedRoles" value="user"/>
    <parameter name="allowedMethods" value="*"/>
    <parameter name="className" value="test.gaolong.HelloWorldG"/>
    </service>


    其实直接到该文件中增加该内容,不必用org.apache.axis.client.AdminClient来部署描述。 打开IE,可以在http://127.0.0.1:7001/axis/servlet/AxisServlet看到该服务部署到服务列表上。

    5。编写测试application客户端,其代码如下:

    import javax.xml.rpc.ParameterMode;
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.encoding.XMLType;
    import javax.xml.namespace.QName;

    public class ServiceClient{
    public static void main(String[] args) throws Exception{
    String endpoint="http://127.0.0.1:7003/axis/services/HelloWorldG";
    String name="gaong1";
    Service service=new Service();
    Call call=(Call) service.createCall();//回调服务
    call.setUsername("gaolong1");
    call.setPassword("8001");//用户认证
    call.setTargetEndpointAddress(new java.net.URL(endpoint));
    // call.setOperationName("sayHelloG");
    call.setOperationName(new QName("http://gaolong.test", "sayHelloG"));//设置指定的命名空间,根据wsdl文件来决定
    call.addParameter("name",XMLType.XSD_STRING,ParameterMode.IN);
    call.setReturnType(XMLType.XSD_STRING);//XMLType.XSD_STRING);
    String ret=(String)call.invoke(new Object[] {name});
    System.out.println(ret);
    }
    }


    运行之后有关的显示。

    6。通过tcpmonitor来监听的soap消息如下:

    请求soap:

    <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <ns1:sayHelloG soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://gaolong.test">
    <name xsi:type="xsd:string">gaolong1</name>
    </ns1:sayHelloG>
    </soapenv:Body></soapenv:Envelope>


    回应soap:

    <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <ns1:sayHelloGResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://gaolong.test">
    <sayHelloGReturn xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">HelloGgaolong1</sayHelloGReturn>
    </ns1:sayHelloGResponse>
    </soapenv:Body>
    </soapenv:Envelope>
  • 相关阅读:
    排序算法的实现(冒泡,选择,插入 O(N*N)--理解方法实现
    HTTPS工作原理和TCP握手机制
    HTTP协议学习
    IP头,TCP头,UDP头,MAC帧头定义
    单链表的实现
    数字图像处理------中值滤波
    对于矩阵的理解-- by 孟岩老师
    java编码问题总结
    jsp数据库连接大全和数据库操作封装到Javabean
    构建一个高可扩展性javabean和jsp连接数据库操作
  • 原文地址:https://www.cnblogs.com/leonbond/p/2373616.html
Copyright © 2011-2022 走看看