Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
208,23 KB
Nội dung
Thiết kế và phát triển các dịch vụ Web JAX-WS 2.0 Rajeev Hathi, Nhà tư vấn, IBM Naveen Balani, Tác giả Tóm tắt: Việc sử dụng công nghệ Java™ API dùng cho các dịch vụ Web XML (JAX-WS) để thiết kế và phát triển các dịch vụ Web thu được nhiều lợi ích, gồm cả việc đơn giản hoá việc xây dựng các dịch vụ Web và máy khách dịch vụ Web trong Java, dễ dàng phát triển và triển khai các dịch vụ Web, và tăng tốc độ phát triển các dịch vụ Web. Hướng dẫn này dẫn dắt bạn qua các cách làm mọi thứ và nhiều hơn nữa bằng cách phát triển một ứng dụng mẫu xử lý đơn hàng (sample order-processing application), bộc lộ ra chức năng của nó như các dịch vụ Web. Sau khi xong hướng dẫn này, bạn sẽ có khả năng áp dụng các khái niệm và kiến thức vừa được tiếp thu để phát triển các dịch vụ Web cho ứng dụng của bạn bằng cách sử dụng công nghệ JAX-WS. Trước khi bạn bắt đầu Về hướng dẫn này Trong hướng dẫn này, bạn thiết kế và phát triển một ứng dụng xử lý đơn hàng, thể hiện ra chức năng của nó như là các dịch vụ Web, nhờ đó những người tiêu dùng khác nhau có thể đặt mua thông tin theo một cách thức độc lập (nền tảng). Mục tiêu Sau khi đi hết hướng dẫn này, bạn có thể áp dụng các khái niệm và kiến thức để phát triển dịch vụ Web cho ứng dụng của bạn bằng cách sử dụng công nghệ JAX- WS. Các điều kiện tiên quyết Để hoàn tất thành công hướng dẫn này, bạn phải có một sự hiểu biết cơ bản về công nghệ dịch vụ Web và có một mức độ thành thạo trong việc lập trình Java. Các yêu cầu về hệ thống Các nội dung liên quan: Các gợi ý và các lời khuyên các dịch vụ Web: JAX-RPC sơ với loạt JAX- WS. Các API của máy khách JAX-WS trong gói tính năng các dịch vụ Web của WebSphere Application Server V6.1 (Máy chủ ứng dụng WebSphere V6.1). Các dịch vụ Web nhanh trên trình diễn theo yêu cầu. Cung cấp các dịch vụ Web cho các ứng dụng di động. Để chạy các thí dụ trong hướng dẫn này, bạn cần cài đặt Java Platform, Bản chuẩn (Java SE) 6.0. Mục lục Mục lục Trước khi bạn bắt đầu Giới thiệu về JAX-WS Phát triển một dịch vụ Web Công bố dịch vụ Tạo các máy khách dịch vụ Web Chạy máy khách dịch vụ Web Tóm tắt Giới thiệu về JAX-WS Lí do dùng JAX-WS JAX-WS là một công nghệ được thiết kế để đơn giản hóa việc xây dựng các dịch vụ Web và máy khách dịch vụ Web trong Java. Nó cung cấp một bó dịch vụ Web đầy đủ làm nhẹ bớt nhiệm vụ phát triển và triển khai dịch vụ Web. JAX-WS hỗ trợ trình WS-I Basic Profile 1.1, đảm bảo phát triển dịch vụ Web thông qua sử dụng bó JAX-WS có thể được tiêu thụ bởi bất kỳ khách hàng nào được phát triển trong bất kỳ ngôn ngữ lập trình tuân thủ WS-I Basic Profile 1.1. JAX-WS, gồm cả Kiến trúc Java dùng cho XML Binding (JAXB) và SOAP với Các gắn kết API (Attachments API) dùng cho Java (SAAJ). JAXB có khả năng liên kết số liệu bằng cách cung cấp cách thuận lợi để ánh xạ một lược đồ XML sang thể hiện trong mã Java. JAXB bảo vệ sự chuyển đổi các thông báo lược đồ XML trong các thông báo SOAP thành mã Java mà bạn không cần phải hiểu biết đầy đủ về việc phân tích cú pháp XML và SOAP. Đặc tả JAXB định nghĩa sự liên kết giữa Java và các lược đồ XML. SAAJ cung cấp cách xử lý chuẩn về các gắn kết XML chứa trong một thông báo SOAP. Hơn nữa, JAX-WS làm tăng tốc độ phát triển dịch vụ Web thông qua việc cung cấp một thư viện các chú giải để chuyển các lớp đối tượng Java cũ đơn giản (plain old Java object) (POJO) thành các dịch vụ Web. Nó cũng quy định một sự ánh xạ chi tiết từ một dịch vụ được định nghĩa trong Ngôn ngữ Miêu tả Các dịch vụ Web (WSDL) đến các lớp Java thực hiện dịch vụ đó. Bất kì những kiểu phức tạp được định nghĩa trong WSDL cũng đều được ánh xạ thành các lớp Java theo sau việc ánh xạ được định nghĩa bởi đặc tả JAXB. JAX-WS trước đây được đóng gói với Java Platform, Bản Doanh nghiệp (Java EE 5). Đặc tả JAX-WS 2.0 được phát triển dưới JSR 224 của Quy trình Cộng đồng Java (Java Community Process) (JCP). Phát triển một dịch vụ Web Tiếp cận kết giao trước tiên (contract-first approach) so với tiếp cận mã trước tiên (code-first approach) Một cách hay để khởi đầu vào JAX-WS là phát triển trước tiên một dịch vụ Web. Bạn có thể phát triển một dịch vụ Web bằng cách sử dụng một trong hai tiếp cận: Theo mục đích: Bắt đầu bằng một kết giao WSDL, và tạo một lớp Java để thực hiện dịch vụ. Theo mã: Bắt đầu bằng một lớp Java, và sử dụng các chú giải để tạo cả tệp WSDL và giao diện Java. Tiếp cận WSDL theo mục đích đòi hỏi một sự hiểu biết tốt về WSDL và XSD (Định nghĩa lược đồ XML) để định nghĩa các định dạng thông điệp. Nó là một ý tưởng tốt để bắt đầu bằng tiếp cận theo mã nếu bạn chưa quen nhiều với các dịch vụ Web, là cái mà bạn sẽ sử dụng trong hướng dẫn này để phát triển các dịch vụ Web. Phát triển các dịch vụ Web theo mã Khi sử dụng tiếp cận theo mã, bạn bắt đầu bằng một lớp hoặc các lớp Java, chúng thực hiện các đặc tính mà bạn muốn thể hiện ra như là các dịch vụ. Tiếp cận theo mã đặc biệt hữu ích khi các bổ sung Java đã sẵn sàng và bạn cần phải thể hiện các bổ sung này như là các dịch vụ. Phát triển một dịch vụ Web xử lý đơn hàng Chúng ta hãy bắt đầu bằng cách tạo một dịch vụ Web xử lý đơn hàng, chấp nhận thông tin đặt mua hàng, vận chuyển thông tin, và các mục hàng được đặt mua, và cuối cùng là tạo một mã xác nhận (confirmation ID) như là một phản hồi. Bộ mã dùng vào dịch vụ xử lý đơn hàng có trong Liệt kê 1. Đây là một cài đặt giả, in ra định danh khách hàng (customer ID) và số lượng các mục hàng tại bàn điều khiển, sau đó trả về một mã đặt hàng giả của A1234. (Bạn có thể tải về mã nguồn để có ứng dụng đầy đủ trong mục Tải về của bài này.) Giải nén mã nguồn vào ổ C của bạn, nơi có thư mục JAXWS-Tutorial được tạo. Thư mục này chứa mã nguồn, như hiển thị trong Liệt kê 1. Liệt kê 1. Cài đặt dịch vụ Web xử lý đơn hàng package com.ibm.jaxws.tutorial.service; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import com.ibm.jaxws.tutorial.service.bean.OrderBean; //JWS annotation that specifies that the portType name of the //Web service is "OrderProcessPort," the service name //is "OrderProcess," and the targetNamespace used in the generated //WSDL is "http://jawxs.ibm.tutorial/jaxws/orderprocess." @WebService(serviceName = "OrderProcess", portName = "OrderProcessPort", targetNamespace = "http://jawxs.ibm.tutorial/jaxws/orderprocess") //JWS annotation that specifies the mapping of the service onto the // SOAP message protocol. In particular, it specifies that the SOAP messages //are document literal. @SOAPBinding(style=SOAPBinding.Style.DOCUMENT,use=SOAPBinding. Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED) public class OrderProcessService { @WebMethod public OrderBean processOrder(OrderBean orderBean) { // Do processing System.out.println("processOrder called for customer" + orderBean.getCustomer().getCustomerId()); // Items ordered are if (orderBean.getOrderItems() != null) { System.out.println("Number of items is " + orderBean.getOrderItems().length); } //Process order. //Set the order ID. orderBean.setOrderId("A1234"); return orderBean; } } OrderBean giữ lại thông tin đặt mua hàng như trình bày trong Liệt kê 2. Cụ thể, nó chứa các tham chiếu đến khách hàng, các mục hàng đặt mua, và đối tượng địa chỉ chuyển hàng. Liệt kê 2. Lớp OrderBean giữ lại thông tin đặt mua hàng package com.ibm.jaxws.tutorial.service.bean; public class OrderBean { private Customer customer; private Address shippingAddress; private OrderItem[] orderItems; private String orderId; public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public String getOrderId() { return orderId; } public void setOrderId(String orderId) { this.orderId = orderId; [...]... cái mà dịch vụ Web có thể được công bố ra bằng cách gọi một cuộc gọi API đơn giản Tiếp theo bạn hãy quan sát cách thử nghiệm các dịch vụ Web của bạn bằng cách sử dụng tiếp cận này Công bố dịch vụ Tạo các tạo tác JAX-WS Bạn tạo các tạo tác JAX-WS khả chuyển cho dịch vụ Web xử lý đơn hàng bằng cách chạy công cụ wsgen Công cụ này đọc một lớp SEI Web và tạo tất cả tạo tác yêu cầu cho các triển khai và đòi... Tạo các máy khách dịch vụ Web Tạo các máy khách dịch vụ Web từ WSDL Trong mục này bạn sẽ tìm hiểu cách tạo các máy khách dịch vụ Web từ WSDL JAX-WS có kèm một công cụ gọi là wsimport được dùng để tạo các tạo tác khả chuyển JAX-WS từ WSDL Các tạo tác khả chuyển thường được tạo gồm như sau: SEI Dịch vụ (lớp cài đặt dịch vụ bạn cần thực hiện) Các lớp do JAXB tạo từ các kiểu lược đồ... nơi máy khách dịch vụ Web được thực hiện, bạn nhận được đầu ra sau: Order id is A1234 Như bạn thấy trong mã máy khách, bạn không xử lý bất kỳ định dạng SOAP hoặc dựa trên XML nào để gọi các phép toán dịch vụ Web; thay vào đó bạn xử lý các lớp JAXB được tạo cho các thông báo đầu vào, đầu ra và sử dụng các đối tượng giao diện dịch vụ và lớp dịch vụ, hành động như các stub để gọi dịch vụ Web Các stub chịu... tạo tác yêu cầu cho các triển khai và đòi hỏi dịch vụ Web Công cụ wsgen tạo tệp WSDL và lược đồ XSD cho các dịch vụ Web, những thứ cần được công bố Để tạo các tạo tác JAX-WS, đầu tiên bạn cần phải biên dịch dịch vụ và các nguồn bean: 1 Mở một lệnh nhắc, và chuyển đến c:\JAXWS - JAXWS-Tutorial 2 Chạy lệnh sau để biên dịch các tệp Java và đặt các tệp lớp vào các thư mục tương ứng của chúng: javac com\ibm\jaxws\tutorial\service\*.java... (lớp do JAXB tạo), làm nhẹ đi sự phát triển của các máy khách dịch vụ Web và gọi các phép toán trên dịch vụ Web Bạn tạo các tạo tác JAX-WS từ WSDL OrderProcess bằng cách sử dụng công cụ wsimport Rồi bạn tạo một máy khách dịch vụ Web, sử dụng mã tạo tác được tạo để gọi dịch vụ Web xử lý đơn hàng Để tạo các tạo tác JAX-WS, chuyển đến thư mục JAXWS-Tutorial, và chạy lệnh wsimport hiển thị trong Liệt kê 12... khai dịch vụ, sau đó gói dịch vụ Web như một tạo tác được triển khai — thường là một tệp WAR — và triển khai tệp WAR vào bất kỳ máy chủ tương thích nào có hỗ trợ đặc tả JAX-WS 2.0 Các tạo tác điển hình được tạo là các lớp đảm bảo chuyển đổi các đối tượng Java thành XML, và tệp WSDL và lược đồ XSD dựa trên giao diện dịch vụ Nhằm mục đích thử nghiệm, Java 6 bao gói kết hợp một máy chủ Web hạng nhẹ vào... (OrderProcess): Lớp mà các máy khách của bạn sử dụng để đưa các yêu cầu đến dịch vụ Web Giao diện dịch vụ (OrderProcessService): Lớp chứa giao diện, mà dịch vụ của bạn thực hiện Bây giờ hãy quan sát cách tạo một máy khách dịch vụ Web bằng cách sử dụng các tạo tác bạn đã tạo trên đây Các mã tham chiếu thí dụ có trong thư mục com\ibm\jaxws\tutorial\service\client Bộ mã cho các máy khách dịch vụ Web có trong... thông báo sau: Dịch vụ Web được công bố tại http://localhost:8080/OrderProcessWeb/orderprocess Để ngừng chạy các dịch vụ Web, chấm dứt quy trình Java này Việc này công bố dịch vụ Web đơn hàng tại địa chỉ http://localhost:8080/OrderProcessWeb/orderprocess Bạn có thể xác minh liệu dịch vụ Web đó đang chạy bằng cách cho hiển thị WSDL được tạo bởi dịch vụ Web xử lý đơn hàng: 6 Mở trình duyệt, và chuyển đến... = orderItems; } } Điểm xuất phát để phát triển một dịch vụ Web JAX-WS là một lớp Java được chú thích bằng chú giải javax.jws.WebService Các chú giải JAX-WS được sử dụng là một bộ phận của các dịch vụ Web Metadata cho đặc tả Java Platform (JSR-181) Như bạn hẳn để ý đến, OrderProcessService được chú thích bằng chú giải WebService, định nghĩa lớp như một điểm cuối dịch vụ Web Lớp OrderProcessService (đây... máy khách dịch vụ Web liệt kê trên đây: Tạo một cá thể của lớp OrderProcess bằng cách vào URL WSDL của dịch vụ Web OrderProcess cùng với QName của dịch vụ Tạo một cá thể của OrderBean và điền thông tin đặt mua hàng trong phương thức populateOrder() Gọi ra một uỷ nhiệm đến dịch vụ, còn gọi là một cổng, bằng cách dẫn ra getOrderProcessPort() trên dịch vụ Cổng này thực hiện giao diện dịch vụ được . thiết kế và phát triển các dịch vụ Web thu được nhiều lợi ích, gồm cả việc đơn giản hoá việc xây dựng các dịch vụ Web và máy khách dịch vụ Web trong Java, dễ dàng phát triển và triển khai các dịch. Thiết kế và phát triển các dịch vụ Web JAX-WS 2. 0 Rajeev Hathi, Nhà tư vấn, IBM Naveen Balani, Tác giả Tóm tắt: Việc sử dụng công nghệ Java™ API dùng cho các dịch vụ Web XML (JAX-WS) để thiết. SE) 6 .0. Mục lục Mục lục Trước khi bạn bắt đầu Giới thiệu về JAX-WS Phát triển một dịch vụ Web Công bố dịch vụ Tạo các máy khách dịch vụ Web Chạy máy khách dịch vụ Web