Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
1,41 MB
Nội dung
Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội Chương 3 Phát triển Web Service với các công nghệ chuẩn của java Bài viết gồm 6 phần: I. Giới thiệu II. Tổng quan các công nghệ III. Các công nghệ nền tảng của Web Service IV. Các công nghệ của Java hỗ trợ Web Service V. Các công cụ để sử dụng các công nghệ của Java cho web VI. Mô hình lập trình I. Giới thiệu 1. Mục đích Giới thiệu và hướng dẫn sử dụng các công nghệ và công cụ chuẩn do Sun cung cấp để làm việc với Web Service. 2. Người đọc Yêu cầu có kiến thức cơ bản về tư duy lập trình và ngôn ngữ Java. 3. Tham khảo http://www.w3.org/2002/ws/ http://ws.apache.org/ http://java.sun.com/webservices/ II. Tổng quan các công nghệ Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội Figure 1 Các công nghệ và công cụ WS Figure 2 Kiến trúc hướng dịch vụ III. Các công nghệ nền tảng của Web Service 1. XML (eXtensible Markup Language) • Đã trở thành chuẩn cho việc mô tả dữ liệu được trao đổi trên nền web. Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội • Là ngôn ngữ đánh dấu, sử dụng các thẻ (tag) để đánh dấu nội dung của văn bản và định nghĩa cấu trúc của thông tin. • Vd: <element name="locateCustomer"> <complexType> <sequence> <element name="FirstName" type="xs:string"/> <element name="LastName" type="xs:string"/> <element name="Address" type="USAddress"/> </sequence> </complexType> </element> <element name="locateCustomerResponse"> <complexType> <sequence> <element name="CustomerRecord" type="CustomerRecord"/> </sequence> </complexType> </element> • Tài liệu XML phải tuân theo một cấu trúc chuẩn (Well-formed). • Tài liệu XML thường được kết hợp với lược đồ XML (XML Schema) để quy định cú pháp và cấu trúc các thẻ được sử dụng trong tài liệu XML. • Do có các tính chất trên nên tài liệu XML có thể dễ dàng được xử lý bởi các ứng dụng và XML là ngôn ngữ dữ liệu cho Web Service. 2. SOAP (Simple Object Access Protocol) Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội Figure 3 Một SOAP Message • Là giao thức cấp cao dựa vào XML để trao đổi thông tin trong các hệ thống phân tán. • SOAP cung cấp một định dạng chung cho các dữ liệu được trao đổi giữa client và server. • Đơn vị trao đổi thông tin cơ bản của SOAP là 1 SOAP message. • SOAP Message chính là một SOAP Envelope trong đó chứa SOAP Body và có thể chứa SOAP Header. • SOAP Envelope xác định XML Namespace và loại encoding được sử dụng trong SOAP message. • SOAP header được sử dụng để cho các ứng dụng quyết định việc xử lý SOAP message như thế nào. • Vd: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:end="http://endpoint.helloservice/"> <soapenv:Body> <end:getUserBean> <! Optional: > Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội <arg0>?</arg0> </end:getUserBean> </soapenv:Body> </soapenv:Envelope> 3. WSDL (Web Service Definition Language) • Client và server giao tiếp với nhau thông qua việc gửi các SOAP message. WSDL định nghĩa ra nội dung và câu trúc của SOAP message đó. • WSDL là tài liệu XML đùng để mô tả interface của Web service. • Tài liệu WSDL định nghĩa một lược đồ XML cho việc mô tả web service. • Vd: <definitions targetNamespace="http://endpoint.helloservice/" name="HelloService" xmlns:tns="http://endpoint.helloservice/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <xsd:schema> <xsd:import namespace="http://endpoint.helloservice/" schemaLocation="http://localhost:8080/hello/hello?xsd=1"/> </xsd:schema> </types> <message name="sayHello"> <part element="tns:sayHello" name="parameters"/> </message> <message name="sayHelloResponse"> <part element="tns:sayHelloResponse" name="parameters"/> </message> <message name="getUserBean"> Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội <part element="tns:getUserBean" name="parameters"/> </message> <message name="getUserBeanResponse"> <part element="tns:getUserBeanResponse" name="parameters"/> </message> <message name="Exception"> <part element="tns:Exception" name="Exception"/> </message> <portType name="Hello"> <operation name="sayHello"> <input message="tns:sayHello"/> <output message="tns:sayHelloResponse"/> </operation> <operation name="getUserBean"> <input message="tns:getUserBean"/> <output message="tns:getUserBeanResponse"/> <fault message="tns:Exception" name="Exception"/> </operation> </portType> <binding type="tns:Hello" name="HelloPortBinding"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sayHello"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="getUserBean"> Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> <fault name="Exception"> <soap:fault use="literal" name="Exception"/> </fault> </operation> </binding> <service name="HelloService"> <port binding="tns:HelloPortBinding" name="HelloPort"> <soap:address location="http://localhost:8080/hello/hello"/> </port> </service> </definitions> IV. Các công nghệ của Java hỗ trợ Web Service 1. JAXP (Java API for XML Processing) • Là một tập hợp các API cho việc xử lý tài liệu XML • Bao gồm các tập API con để xử lý tài liệu XML như DOM, SAX. 2. JAX-RPC (Java API for XML – Remote Produce Call) • Tập hợp các API để cung cấp các service bằng XML-RPC. • Cho phép Java gọi các phương thức của Web Service thông qua các hệ thống phân tán. • Không giới hạn việc sử dụng nền Java cho cả client và server. Client sử dụng JAX-RPC có thể gọi Web Service trên các nền tảng khác nhau. Client không dùng Java cũng có thể gọi các Web Service sử dụng công nghệ Java với Jax-RPC. • Được thiết kế để đơn giản việc sử dụng SOAP. Lập trình viên không cần phải làm công việc xử lý trực tiếp với SOAP mà chỉ cần sử dụng ngôn ngữ Java và các tập API của Java. Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội • Từ phiên bản WSDP 2.0. JAX-RPC được đặt tên lại thành JAX-WS. 3. JAXB (Java API for XML Data Binding) • Cung cấp các phương thức để mapping tài liệu XML thành 1 tập hợp các đối tượng Java và các Interface dựa trên lược đồ XML. • Làm việc trực tiếp với XML thay vì phải xử lý nội dung XML. • Công việc được thực hiện với 2 bước chính đó là: o Sử dụng bộ binding compiler được cung cấp với JAXB để binding lược đồ XML thành các đối class Java và các interface. o Sử dụng các phương thức gắn kết dữ liệu XML với các class và interface được tạo ra. 4. SAAJ (SOAP with Attachment API for Java) • Một tập hợp API tuân theo đặc tả SOAP with Attachment. • Dùng để tạo ra SOAP message có hoặc không có đình kèm dữ liệu nhị phân. 5. XWS (XML and Web Service Sercurity) • Cung cấp bảo mật cấp SOAP message cho các ứng dụng sử dụng JAX-RPC. • Thông tin bảo mật được chứa trong SOAP header. • Mục đích dùng để chống các sự truy cập trái phép khi message được gửi trên đường truyền. V. Các công cụ để sử dụng các công nghệ của Java cho web service. 1. APT • Apt là công cụ cung cấp phương tiện cho việc xử lý các annotation được thêm vào trong Java bởi JSR 175. JSR 175 cho phép lập trình viên khai báo những loại bổ nghĩa cấu trúc mới để kết hợp với thành phần trường, phương thức, class. • Ant task cho apt được cung cấp bởi JAX-WS • Vd: <apt verbose="true|false" Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội classpath="classpath" destdir="directory for generated class files" sourcedestdir="directory for generated source files" nocompile="true|false" print="true|false" factorypath="<path>" factory="name of AnnotationProcessorFactory to use" xlistannotationtypes="true|false" xlistdeclarations="true|false" xprintaptrounds="true|false" xprintfactoryinfo="true|false" xclassesasdecls="true|false" debug="true|false" debuglevel="lines|vars|source" nowarn="true|false" Giáo trình Java Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội deprecation="true|false" bootclasspath="<path>" extdirs="<path>" endorseddirs="<path>" sourcepath="<path>" encoding="specify character encoding used by source files" target="generate class files for specific virtual machine version"> <option key="keyname" value="keyvalue"/> <source > </source> <classpath > </classpath> </apt> • Bảng các tuỳ chọn của công cụ apt verbose: In ra thông báo classpath: Đường dẫn đến các class và thư viện destdir: Xác định nơi chứa các class được biên dịch sourcedestdir: Xác định nơi chứa các file source java được tạo ra nocompile: Không biên dịch các file source java print: In ra máy in debug: Tạo ra các thông tin debug debuglevel: Cấp độ debug: lines, vars, sources nowarn: Không tạo ra các cảnh báo sourcepath: Xác định đường dẫn đến các file source java [...]... HelloService HelloService com.sun.xml.ws.transport.http.servlet.WSServlet HelloService /hello Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội Giáo trình Java 30 •... encoding="UTF-8"?> HelloService com.sun.xml.ws.transport.http.servlet.WSServletContextListener HelloService... this.password = password; Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội Giáo trình Java } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } • Viết file java thi hành web service Hello .java package helloservice.endpoint; import java. util.Date; import javax.jws.WebMethod; import javax.jws.WebService; @WebService() public class Hello { private... Trường ĐHSP Hà Nội Giáo trình Java II Tích hợp Java và NET sử dịch vụ web 1 Viết dịch vụ web bằng Axis và NET Trong phần này, chúng ta sẽ tích hợp dịch vụ web viết bằng ngôn ngữ java sử dụng thư viện Apache Axis với dịch vụ web viết bằng ngôn ngữ.NET Chúng ta sẽ viết 2 dịch vụ web bằng cách sử dụng thư viện Apache Axis và NET Sau đó chúng ta sẽ viết 2 chương trình bằng ngôn ngữ Java và NET để sử dụng... được -http://javasimple.wordpress.com 2 Client Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội Giáo trình Java Figure 5 Cấu trúc cây thư mục • Định nghĩa wsimport ant task trong file build.xml Tạo một target import-webservice: . <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloService</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> Giáo trình. xsi:schemaLocation="http:/ /java. sun.com/xml/ns/javaee http:/ /java. sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>HelloService</display-name> <listener> <listener- class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>. về tư duy lập trình và ngôn ngữ Java. 3. Tham khảo http://www.w3.org/2002/ws/ http://ws.apache.org/ http:/ /java. sun.com/webservices/ II. Tổng quan các công nghệ Giáo trình Java Ths. Nguyễn