zoukankan      html  css  js  c++  java
  • WebService从服务端到客户端的用例

    1、首先编写Wsdl(基于契约优先的方式),要注意的是命名空间(若是使用include或import)最好使用一致的,代码如下:

      1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      2 <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
      3                 xmlns:tns="http://www.xiaoqiaolv/ws" 
      4                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      5                 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      6                 name="UserServiceImpl" 
      7                 targetNamespace="http://www.xiaoqiaolv/ws">
      8   <wsdl:types>
      9     <xsd:schema targetNamespace="http://www.xiaoqiaolv/ws">
     10      <!-- <xsd:include schemaLocation="UserSchema.xsd"/> -->
     11      <!-- <xsd:import namespace="http://www.xiaoqiaolv/ws" schemaLocation="UserSchema.xsd"/>-->
     12     
     13         <xsd:element name="add" type="tns:add"/>
     14         <xsd:element name="addResponse" type="tns:addResponse"/>
     15         <xsd:element name="delete" type="tns:delete"/>
     16         <xsd:element name="deleteResponse" type="tns:deleteResponse"/>
     17         <xsd:element name="login" type="tns:login"/>
     18         <xsd:element name="loginResponse" type="tns:loginResponse"/>
     19         <xsd:element name="list" type="tns:list"/>
     20         <xsd:element name="listResponse" type="tns:listResponse"/>
     21         
     22         <xsd:complexType name="add">
     23             <xsd:sequence>
     24                 <xsd:element name="user" type="tns:user"/>
     25             </xsd:sequence>
     26         </xsd:complexType>
     27         <xsd:complexType name="addResponse">
     28             <xsd:sequence/>
     29         </xsd:complexType>
     30         
     31         <xsd:complexType name="delete">
     32             <xsd:sequence>
     33                 <xsd:element name="username" type="xsd:string"/>
     34             </xsd:sequence>
     35         </xsd:complexType>
     36         <xsd:complexType name="deleteResponse">
     37             <xsd:sequence/>
     38         </xsd:complexType>
     39         
     40         <xsd:complexType name="list">
     41             <xsd:sequence/>
     42         </xsd:complexType>
     43         <xsd:complexType name="listResponse">
     44             <xsd:sequence minOccurs="0" maxOccurs="unbounded">
     45                 <xsd:element name="user" type="tns:user"/>
     46             </xsd:sequence>
     47         </xsd:complexType>
     48         
     49         <xsd:complexType name="login">
     50             <xsd:sequence>
     51                 <xsd:element name="username" type="xsd:string"/>
     52                 <xsd:element name="password" type="xsd:string"/>
     53             </xsd:sequence>
     54         </xsd:complexType>
     55         <xsd:complexType name="loginResponse">
     56             <xsd:sequence/>
     57         </xsd:complexType>
     58         <xsd:complexType name="user">
     59             <xsd:sequence>
     60                 <xsd:element name="id" type="xsd:int"/>
     61                 <xsd:element name="username" type="xsd:string"/>
     62                 <xsd:element name="password" type="xsd:string"/>
     63             </xsd:sequence>
     64         </xsd:complexType>
     65     </xsd:schema>
     66   </wsdl:types>
     67   
     68   <wsdl:message name="addMessage">
     69     <wsdl:part element="tns:add" name="add"/>
     70   </wsdl:message>
     71   <wsdl:message name="addResponseMessage">
     72     <wsdl:part element="tns:addResponse" name="addResponse"/>
     73   </wsdl:message>
     74   
     75   <wsdl:message name="deleteMessage">
     76       <wsdl:part name="delete" element="tns:delete"/>
     77   </wsdl:message>
     78   <wsdl:message name="deleteResponseMessage">
     79       <wsdl:part name="deleteResponse" element="tns:deleteResponse"/>
     80   </wsdl:message>
     81   
     82   <wsdl:message name="listMessage">
     83       <wsdl:part name="list" element="tns:list"/>
     84   </wsdl:message>
     85   <wsdl:message name="listResponseMessage">
     86       <wsdl:part name="listResponse" element="tns:listResponse"/>
     87   </wsdl:message>
     88   
     89   <wsdl:message name="loginMessage">
     90       <wsdl:part name="login" element="tns:login"/>
     91   </wsdl:message>
     92   <wsdl:message name="loginResponseMessage">
     93       <wsdl:part name="loginResponse" element="tns:loginResponse"></wsdl:part>
     94   </wsdl:message>
     95   
     96   <wsdl:portType name="UserService">
     97     <wsdl:operation name="add">
     98       <wsdl:input message="tns:addMessage"/>
     99       <wsdl:output message="tns:addResponseMessage"/>
    100     </wsdl:operation>
    101     
    102     <wsdl:operation name="delete">
    103       <wsdl:input message="tns:deleteMessage"/>
    104       <wsdl:output message="tns:deleteResponseMessage"/>
    105     </wsdl:operation>
    106     
    107     <wsdl:operation name="list">
    108       <wsdl:input message="tns:listMessage"/>
    109       <wsdl:output message="tns:listResponseMessage"/>
    110     </wsdl:operation>
    111     
    112     <wsdl:operation name="login">
    113       <wsdl:input message="tns:loginMessage"/>
    114       <wsdl:output message="tns:loginResponseMessage"/>
    115     </wsdl:operation>
    116   </wsdl:portType>
    117   
    118   <wsdl:binding name="userBinding" type="tns:UserService">
    119     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    120     <wsdl:operation name="add">
    121       <soap:operation soapAction="http://www.xiaoqiaolv/ws/add"/>
    122       <wsdl:input>
    123         <soap:body use="literal"/>
    124       </wsdl:input>
    125       <wsdl:output>
    126         <soap:body use="literal"/>
    127       </wsdl:output>
    128     </wsdl:operation>
    129     
    130     <wsdl:operation name="delete">
    131       <soap:operation soapAction="http://www.xiaoqiaolv/ws/delete"/>
    132       <wsdl:input>
    133         <soap:body use="literal"/>
    134       </wsdl:input>
    135       <wsdl:output>
    136         <soap:body use="literal"/>
    137       </wsdl:output>
    138     </wsdl:operation>
    139     
    140     <wsdl:operation name="login">
    141       <soap:operation soapAction="http://www.xiaoqiaolv/ws/login"/>
    142       <wsdl:input>
    143         <soap:body use="literal"/>
    144       </wsdl:input>
    145       <wsdl:output>
    146         <soap:body use="literal"/>
    147       </wsdl:output>
    148     </wsdl:operation>
    149     
    150     <wsdl:operation name="list">
    151       <soap:operation soapAction="http://www.xiaoqiaolv/ws/list"/>
    152       <wsdl:input>
    153         <soap:body use="literal"/>
    154       </wsdl:input>
    155       <wsdl:output>
    156         <soap:body use="literal"/>
    157       </wsdl:output>
    158     </wsdl:operation>
    159   </wsdl:binding>
    160   <wsdl:service name="UserServiceImpl">
    161     <wsdl:port binding="tns:userBinding" name="UserServiceImplPort">
    162       <soap:address location="http://localhost:9999/ws"/>
    163     </wsdl:port>
    164   </wsdl:service>
    165 </wsdl:definitions>

    2、实现服务器端的应用实现,这个就不加代码了,根据wsdl文档用wsimport生成服务,只取出接口service,然后其他的和我们正常的web开发都一致。

    3、服务端发布服务:public static void main(String[] args) {
            Endpoint.publish("http://localhost:9999/ws", new UserServiceImpl());
        }

    4、实现客户端:根据服务网址http://localhost:9999/ws,生成服务,得到所有以.java为后缀的类,把整个包包含在自己的项目中

    5、编写测试类:代码如下:

     1 public class Test {
     2     private UserService userService;
     3     private UserServiceImpl userServiceImpl;
     4     
     5     public void testWsdl(){
     6         try {
     7             URL url = new URL("http://localhost:9999/ws?wsdl");
     8             QName  qname = new QName("http://www.xiaoqiaolv/ws","UserServiceImpl");
     9             userServiceImpl = new UserServiceImpl(url,qname);
    10             userService = userServiceImpl.getUserServiceImplPort();
    11             User user = new User();
    12             user.setUsername("aaa");
    13             user.setPassword("1111");
    14             user.setId(21212);
    15             userService.add(user);
    16             List<User> list = userService.list();
    17             for(User u:list){
    18                 System.out.println(u.getUsername());
    19             }
    20         } catch (MalformedURLException e) {
    21             // TODO Auto-generated catch block
    22             e.printStackTrace();
    23         }
    24         
    25     }
    26     public static void main(String[] args) {
    27         new Test().testWsdl();
    28     }
    29 }

    6、有问题的话可以打开tcpmon,对接口服务进行监听,查看客户端与服务端传递的信息java -jar tcpmon.jar

    我很小我很弱,我在慢慢成长!
  • 相关阅读:
    EF框架下的双表查询
    MVC中控制器向视图传值的四种方式
    html中常用的标签元素
    配置sql server 允许远程连接
    Sql Server中使用存储过程来实现一些时间差的改变
    Linux学习资料整理
    后缀数组求字符串最长重复子串
    static关键字
    ubuntu下搭建hadoop平台
    机器学习中的一些概念
  • 原文地址:https://www.cnblogs.com/lvzhanhui/p/xiaoqiaolv_webService.html
Copyright © 2011-2022 走看看