1. Trang chủ
  2. » Công Nghệ Thông Tin

Thiết kế và phát triển các dịch vụ Web JAX-WS 2.0 pps

37 442 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế và phát triển các dịch vụ Web JAX-WS 2.0
Tác giả Rajeev Hathi, Naveen Balani
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia TP.HCM
Chuyên ngành Khoa học Máy Tính
Thể loại Đề tài luận văn
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 37
Dung lượng 208,23 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

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 để t

Trang 1

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

Trang 2

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: 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

Trang 3

 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

Trang 4

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)

Trang 5

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ã

Trang 6

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

//JWS annotation that specifies that the portType name of the

//Web service is "OrderProcessPort," the service name

Trang 7

//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,

Trang 8

System.out.println("processOrder called for customer"

Trang 9

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;

Trang 10

private String orderId;

public Customer getCustomer() {

Trang 12

WebService, định nghĩa lớp như một điểm cuối dịch vụ Web

Lớp OrderProcessService (đây là lớp có chú giải @javax.jws.WebService ) định nghĩa ngầm định một giao diện điểm cuối dịch vụ (SEI), khai báo các phương thức

mà một khách hàng có thể gọi ra trên dịch vụ Mọi phương thức công cộng được định nghĩa trong lớp này, nếu các phương thức không được chú thích bằng một

chú giải @WebMethod với phần tử loại trừ đặt ở true (đúng), được ánh xạ thành

các phép toán WSDL Chú giải @WebMethod là tuỳ ý và được dùng để tuỳ chỉnh phép toán dịch vụ Web Ngoài phần tử loại trừ, chú giải javax.jws.WebMethod còn cung cấp tên của phép toán và các phần tử hoạt động, được sử dụng để tuỳ chỉnh thuộc tính tên của phép toán và phần tử hoạt động SOAP trong một tài liệu WSDL Thuộc tính này là tuỳ chọn; nếu chưa được định nghĩa, các giá trị mặc định được lấy từ tên lớp

Trang 13

Sau khi dịch vụ Web được thực hiện, bạn cần tạo bất kỳ tạo tác nào cần có để triển 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 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

Trang 14

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 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:

com\ibm\jaxws\tutorial\service\jaxws

Sau khi các tạo tác được tạo, bạn công bố dịch vụ Web xử lý đơn hàng bằng cách chạy máy khách công bố các dịch vụ Web sau đây

Trang 15

4 Biên dịch OrderWebServicePublisher bằng cách chạy lệnh sau đây từ thư mục c:\JAXWS- Tutorial:

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:

Trang 16

Liệt kê 3 Mã dùng để công bố dịch vụ Web xử lý đơn hàng

package com.ibm.jaxws.tutorial.service.publish;

import javax.xml.ws.Endpoint;

import com.ibm.jaxws.tutorial.service.OrderProcessService;

public class OrderWebServicePublisher {

public static void main(String[] args) {

Endpoint.publish("http://localhost:8080/OrderProcessWeb/orderprocess",

new OrderProcessService());

Trang 17

OrderWebServicePublisher

Phân tích WSDL được tạo

Để quan sát WSDL dịch vụ Web xử lý đơn hàng được tạo, gõ nhập địa chỉ URL sau đây trong trình duyệt:

http://localhost:8080/OrderProcessWeb/orderprocess?wsdl

Chúng ta hãy phân tích một số khía cạnh WSDL quan trọng và xem xét cách đã tạo ra các tạo phẩm lược đồ và WSDL dựa trên siêu dữ liệu JAX-WS, bắt đầu bằng việc phân tích XSD được tạo ra Người ta nhập XSD này vào một tệp WSDL

Trang 18

khi sử dụng các thẻ xsd:import (xem Liệt kê 4); schemaLocation chỉ rõ địa chỉ của XSD

Liệt kê 4 Tệp WSDL chứa lược đồ xử lý đơn hàng định nghĩa

Trang 19

bạn đã định nghĩa trong chú giải @WebService cho OrderProcessService Liệt kê

Công cụ wsgen thực hiện trước đó tạo hai lớp bean bao vỏ (wrapper bean),

ProcessOrder và ProcessOrderResponse giữ lại các thông báo đầu vào và đầu ra đối với dịch vụ Web xử lý đơn hàng Dựa trên các lớp bean bao vỏ, các phần tử lược đồ sau đây được tạo:

 processOrder là của kiểu processOrder, nó đại diện một kiểu phức tạp chứa một phần tử mang tên arg0 và kiểu orderBean Bạn có thể thấy một ánh xạ một-một giữa lớp ProcessOrder và kiểu phức tạp processOrder

 processOrderResponse tương tự như kiểu processOrderResponse các định nghĩa của chúng ánh xạ sang lớp ProcessOrderResponse

Trang 20

Chúng ta hãy quan sát nó kỹ hơn trong Liệt kê 6

Liệt kê 6 Khai báo lược đồ đối với processOrder

 Một phần tử customer có kiểu là customer

 Một orderId có kiểu là string

Trang 21

 orderItems (là một mảng, vì nó xác định thuộc tính maxOccurs là unbounded) có kiểu là orderItem

 shippingAddress có kiểu là address

Liệt kê 7 Khai báo lược đồ đối với processOrder

Trang 22

</xs:complexType

Tương tự, phần còn lại của các định nghĩa lược đồ cho customer, orderItems và address được ánh xạ sang các Java bean Customer, OrderItem và Address tương ứng

Với các định nghĩa lược đồ được phân tích, chúng ta hãy vào lại các định nghĩa thông báo trong WSDL, hiện trong Liệt kê 8 WSDL quy định các thông báo processOrder và processOrderResponse các phần tử bộ phận của chúng là

processOrder và processOrderResponse (trước đây bạn đã thấy các định nghĩa lược đồ của chúng) portType quy định phép toán processOrder thông báo đầu vào của chúng là processOrder và thông báo đầu ra của chúng là

Trang 23

Liệt kê 9 Thông tin liên kết đối với tài liệu WSDL

<binding name="OrderProcessPortBinding"

Trang 24

có thể quan sát nó chi tiết trong Liệt kê 10

Trang 25

Liệt kê 10 Thông tin dịch vụ đối với tài liệu WSDL

Liệt kê 11 Mẫu SOAP thông báo cho processOrder hoạt động

<?xml version="1.0"?>

<soapenv:Envelope

Trang 27

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 đồ

 Lớp ngoại lệ được ánh xạ từ wsdl:fault (nếu có)

Các máy khách sử dụng các tạo tác được tạo để gọi dịch vụ Web Các máy khách dịch vụ Web không cần phải xử lý bất kỳ định dạng SOAP nào, như tạo hoặc phân tích cú pháp các thông báo SOAP Đúng hơn là, việc này được xử lý bởi thời gian chạy JAX-WS, sử dụng mã tạo tác được tạo (lớp do JAXB tạo) Máy khách dịch

vụ Web đến lượt mình lại xử lý đối tượng 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 Mặc dù vậy, trước khi làm điều này, phải chắc chắn rằng bạn đã công bố dịch vụ Web bằng cách chạy OrderWebServicePublisher như đã chỉ ra trong bước 5 trong mục Tạo các tạo tác JAX-WS

Trang 28

Liệt kê 12 Lệnh wsimport tạo các tạo tác JAX-WS mà máy khách dịch vụ Web sử dụng

Các lớp JAXB (Address, Customer, OrderBean, và OrderItem): Được

tạo bằng cách đọc các định nghĩa lược đồ trong WSDL

OrderProcessService

Các lớp RequestWrapper và ResponseWrapper (ProcessOrder và ProcessOrderResponse): Bao bọc đầu vào và đầu ra cho kiểu dạng tài liệu

bọc bằng chữ

Lớp Service (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

Trang 29

Giao diện dịch vụ (OrderProcessService): Lớp chứa giao diện, mà dịch

public class OrderClient {

final QName qName = new QName(

Trang 30

URL url = getWSDLURL(args[0]);

OrderClient client = new OrderClient();

client.processOrder(url);

}

private static URL getWSDLURL(String urlStr) {

URL url = null;

try {

url = new URL(urlStr);

Trang 31

public void processOrder(URL url) {

OrderProcess orderProcessingService = new OrderProcess(url, qName);

System.out.println("Service is" + orderProcessingService);

OrderBean order = populateOrder();

OrderProcessService port =

Trang 32

orderProcessingService.getOrderProcessPort();

OrderBean orderResponse = port.processOrder(order);

System.out.println("Order id is " + orderResponse.getOrderId());

}

private OrderBean populateOrder() {

OrderBean order = new OrderBean();

Customer customer = new Customer();

customer.setCustomerId("A123");

customer.setFirstName("John");

customer.setLastName("Smith");

order.setCustomer(customer);

Ngày đăng: 07/08/2014, 10:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w