WEB SERVICES WSDL and IMPLEMENTATION

Document Sample
WEB SERVICES WSDL and IMPLEMENTATION Powered By Docstoc
					 WEB SERVICES
WSDL và CÀI ĐẶT
             Sinh viên: Bùi Hoàng Đức
                        Trần Tuấn Anh
                       Đoàn Việt Dũng
                      Phạm Hoàng Tiến
   Giảng viên: TS. Vũ Thị Hương Giang
           WSDL and WADL
• WSDL: 1.1(2003), 2.0(2007)
  – 2.0: cho RESTful Web services.
  – Theo khảo sát 32 web service ngẫu nhiên trên
    xmethods.com, tất cả đều sử dụng WSDL 1.1

• WADL: for RESTful web service.
  – Không được phổ biến đặc biệt sau WSDL 2.0.
    (http://en.wikipedia.org/wiki/Web_Application_De
    scription_Language)
    Cấu trúc chung của một văn bản
                WSDL
• Document element là <definitions>, các
  attribute quan trọng:
  – name: tên của web service.
  – xmlns : namespace của văn bản WSDL.
     • WSDL 1.1: http://schemas.xmlsoap.org/wsdl/
     • WSDL 2.0: http://www.w3.org/ns/wsdl
• <definitions> là các nhóm định nghĩa, gồm 4
  phần chính
  Cấu trúc của
1 văn bản WSDL
                <types>
• <types>: optional, cung cấp định nghĩa các
  kiểu dữ liệu được sử dụng ở các thông điệp.
  Các định nghĩa kiểu dữ liệu thường được viết
  trong hệ thống XSD(extensible schema
  definition).
                Ví dụ <types>
•   Sử dụng 1 XSD bên ngoài
•   <types>
•   <xsd:schema>
•     <xsd:import namespace="http://eg/"
    schemaLocation="HelloService_schema1.xsd" />
•     </xsd:schema>
•     </types>

•   Nếu không có kiểu nào được định nghĩa trong type:
•   <types />
             <message>
• Định nghĩa các thông điệp sử dụng trong web
  service. Thứ tự của các message phản ánh cách
  hoạt động của web service: request/response
  hay solicit/response.
• Tên của các message có dạng ---In/---Out; ---
  Request/---Response với ‘---‘ phản ảnh
  operation liên kết với message.
                    <portType>
• biểu diễn dịch vụ như là một tập named operation, mỗi
  operation được mô tả bởi các input/output message . Nó
  giống như là một interface trong ngôn ngữ Java: cho biết
  các operation và message nhưng không cho biết cài đặt bên
  trong.
<portType>
{<operation>
       <input message=”...”>
       <output message=”...”>
</operation>}
</portType>
• Phần “...” là một datatype trong một namespace nào đó.
  Phần trong {} được lặp lại nhiều lần và trong các element
  có nhiều attribute.
                         <binding>
Mô tả các chi tiết rõ ràng của web service. Nó giống như
 là lớp cài đặt một interface trong Java.
      <binding>
      <soap:binding ... />
      {<operation>
      <soap:operation ... />
      <input>
        <soap:input>
      </input>
      <output>
        <soap:output>
      </output>
      </operation> }
      </binding>
          Attributes of <binding>
• style: nhận giá trị ‘rpc’ hoặc ‘document’. ‘rpc’ nghĩa là
  các phần trong message chỉ sử dụng các kiểu dữ liệu cơ
  bản có sẵn trong namespace
  http://www.w3.org/2001/XMLSchema . Giá trị
  ‘document’ nghĩa là các message có sử dụng các
  element được định nghĩa bởi người sử dụng.

• use : nhận giá trị ‘literal’ hoặc ‘encoded’. Giá trị
  ‘literal’ nghĩa là định nghĩa kiểu dữ liệu của service
  theo đúng nguyên văn XML schema của WSDL, còn
  giá trị ‘encoded’ nghĩa là là định nghĩa kiểu dữ liệu của
  service theo các luật mã hóa nào đó, thường là các luật
  mã hóa trong đặc tả SOAP 1.1. Việc sử dụng ‘encoded’
  là không tương thích chuẩn WS-I nên ít được sử dụng.
                      <service>
• Định nghĩa một hoặc nhiều endpoint mà service hoạt động.
   Một endpoint được mô tả là một URL mà các message có
   thể gửi tới để mà sử dụng dịch vụ. Service sẽ liệt kê một
   hoặc nhiều port, mỗi port gồm một portType (interface) và
   một binding(implementation).
<service name=”...”>
<port name=”...” binding=”...”>
<soap:address location=”...” />
</port>
</service>
• Thuật ngữ ‘port’ là lấy từ giao thức TCP, trong đó, một kết
   nối được mô tả bởi một cặp <IPAddress, PortNumber>, mỗi
   port tại một IPAdress sẽ phục vụ một dịch vụ nhất định.
                   SOAP
• SOAP là giao thức được dùng để mà các web
  service liên lạc được với nhau.
• SOAP có 2 phiên bản: SOAP 1.1(năm 2000,
  trong đó, SOAP là viết tắt của ‘Simple Object
  Access Protocol’), SOAP 1.2(năm 2003, trong
  đó, SOAP trở thành danh từ riêng).
• Đa số các web service mà em gặp (như
  AmazonWebService) đều có hỗ trợ các giao
  thức SOAP 1.1 bên cạnh SOAP1.2, HTTP
  GET, HTTP POST.
SOAP messages
             SOAP request message
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <GetDownloadURL xmlns="http://www.ecubicle.net/">

<fileURL>http://www.youtube.com/watch?v=Z4t8LrUSTMo</fileURL>
     </GetDownloadURL>
   </S:Body>
</S:Envelope>
            SOAP response message
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
  <GetDownloadURLResponse xmlns="http://www.ecubicle.net/">

    <GetDownloadURLResult>http://www.youtube.com/get_video?video_id=Z4t8LrU
    STMo&amp;l=255&amp;sk=HHKkhrTi_MBfwyOl9RjxYrKsN2Fgd4wC&amp;fm
    t_map=35%2F640000%2F9%2F0%2F115%2C34%2F0%2F9%2F0%2F115%2C5
    %2F0%2F7%2F0%2F0&amp;t=vjVQa1PpcFNF57VeqNKmEadvgzruTu8xpwNR
    MkWPI%3D&amp;hl=en&amp;plid=AARsgq_hLYy9qaVM&amp;keywords=NA
    SA%252CShuttle%252CRSS%2520Retraction&amp;cr=US
</GetDownloadURLResult>
  </GetDownloadURLResponse>
 </soap:Body>
</soap:Envelope>
     Kiểu của các SOAP message được
     định nghĩa trong văn bản WSDL.
<wsdl:types>
<s:schema elementFormDefault="qualified"
     targetNamespace="http://www.ecubicle.net/">
    <s:element name="GetDownloadURL">
     <s:complexType>
      <s:sequence>
   <s:element minOccurs="0" maxOccurs="1" name="fileURL"
       type="s:string" />
      </s:sequence>
     </s:complexType>
    </s:element>
    <s:element name="GetDownloadURLResponse">
     <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1"
name="GetDownloadURLResult" type="s:string" />
      </s:sequence>
     </s:complexType>
    </s:element>
    <s:element name="string" nillable="true" type="s:string" />
  </s:schema>
 </wsdl:types>
 <wsdl:message name="GetDownloadURLSoapIn">
  <wsdl:part name="parameters" element="tns:GetDownloadURL" />
 </wsdl:message>
 <wsdl:message name="GetDownloadURLSoapOut">
  <wsdl:part name="parameters"
     element="tns:GetDownloadURLResponse" />
 </wsdl:message
              Ví dụ minh họa
• Phát triển 1 web service Encrypt
  – Có 1 phương thức là
  int getEncryptionNumber(String str)
  Trả lại 1 mã hóa tương ứng của 1 xâu.


• Cài đặt web service trên Tomcat 6.0
  – Chú ý: các lib của JAX-WS đã được cài đặt vào
    Tomcat 6.0
                   Cơ chế hoạt động
• Mỗi lần web application được initialized,
• WSServletContextListener sẽ đọc sun-jaxws.xml và tạo ra 1 java.util.List
  các objects RuntimeEndpointInfo.
• Sau đó, nó gọi deploy() method của từng object để tạo ra 1 RuntimeModel
  sử dụng RuntimeModeler.
• Tức là: RuntimeModeler tạo ra 1 runtime model của 1 SEI (portClass-
  service endpoint interface) lớp cài đặt Web service endpoint.
• Mỗi RuntimeModel là một model của a web service và có thể xử lý được
  các request đến
     Phát triển sử dụng JAX-WS

Request                           Request
SOAP                              SOAP
message                           message
           com.sun.xml.ws.tra
           nsport.http.servlet.              Web service
           WSServlet
Response
SOAP                              Response
message                           SOAP
                                  message
           Phát triển từ WSDL
wsdl

           SOSEServlet

WSDL
document



                         Request
                         SOAP
                         message

                                    SOSEServlet

                         Response
                         SOAP
                         message

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:7
posted:1/5/2012
language:
pages:21