Tải bản đầy đủ (.pdf) (23 trang)

Tạo ra các dịch vụ WEB dành cho DB2 9 pureXML ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (657.28 KB, 23 trang )

Tạo ra các dịch vụ WEB dành cho DB2 9 pureXML
Một kỹ thuật điển hình để tạo ra các dịch vụ WEB từ dưới lên (bottom up) cho dữ
liệu XML
Vijay Bommireddipalli, Kiến trúc sư giải pháp của nhóm Data Studio Enablement,
IBM
Tóm tắt: Các dịch vụ WEB là các khối xây dựng quan trọng để đạt được kiến
trúc theo hướng dịch vụ (SOA). Khi có thêm nhiều ứng dụng chuyển hướng tới
kiến trúc theo hướng dịch vụ, thông thường là cần phả
i đưa ra các chức năng ứng
dụng như các dịch vụ WEB. Mục đích của bài viết này là để trình bày làm như thế
nào để bạn có thể dễ dàng tạo ra các dịch vụ WEB bằng cách sử dụng một lớp
Java đơn giản.
Giới thiệu
Ngày nay, các dịch vụ WEB là một thành phần quan trọng của SOA và cho phép
tạo ra các giải pháp linh hoạt và phân hoạch cao. Các dịch vụ WEB có thể được
xây dựng bằ
ng cách sử dụng phương pháp tiếp cận hoặc từ trên xuống (top-down)
hoặc từ dưới lên (bottom-up). Trong phương pháp tiếp cận từ trên xuống, chúng ta
sẽ bắt đầu với một đặc tả kỹ thuật dịch vụ (ví dụ, một tệp WSDL) và sau đó thực
hiện các mã mức dưới để phù hợp với đặc điểm kỹ thuật đưa ra. Trong phương
pháp tiếp cận từ d
ưới lên, chúng ta sẽ bắt đầu bằng một chương trình Java và đưa
ra các chức năng như dịch vụ web.
IBM giới thiệu tính năng pureXML trong DB2 9, cho phép dữ liệu XML sẽ được
lưu nguyên dạng trong cơ sở dữ liệu. Nó tạo ra XML – như là kiểu dữ liệu lớp đầu
tiên trong DB2, và một cột của kiểu dữ liệu XML có thể lưu trữ bất kỳ khuôn dạng
XML được biết trong các dạ
ng cấu trúc cây nguyên thủy trong cơ sở dữ liệu. Sau
khi dữ liệu được lưu giữ trong cơ sở dữ liệu như XML, dữ liệu có thể được truy
vấn rất hiệu quả, như là XML không cần phải phân tích cú pháp tại thời điểm thực
hiện khi đánh giá câu truy vấn. Sau đó chúng ta có thể sử dụng XQuery, SQL,


hoặc bất kỳ giao diện phát triển ứng dụng mà DB2 cung cấp, để truy cập và thao
tác dữ liệu XML.
XForms là một công nghệ giao diệ
n điện tử dựa trên XML, có thể gửi khuôn dạng
dữ liệu như là một thể hiện dữ liệu XML. Nó là một khuyến nghị của W3C và độc
lập về nền tảng và thiết bị. XForms chỉ tách mô hình dữ liệu từ sự trình bày mà
cho phép dữ liệu người sử dụng được gửi đi dưới dạng XML. Người nhận các dữ
liệu này sau đó có thể lưu tr
ữ và thao tác với người sử dụng đã gửi dữ liệu như là
một thể hiện của XML. Có nhiều cách mà trong đó các dữ liệu có thể được gửi
bằng cách sử dụng XForms. Trong ví dụ này, hãy sử dụng các dịch vụ WEB.
Sử dụng XForms cho giao diện người sử dụng cuối, các dịch vụ WEB được xem
như là một cỗ máy phương tiện giao thông, và với DB2 9 cho việc lưu trữ, chúng
ta có th
ể tạo một giải pháp thực sự XML end-to-end mà có thể co giãn để thay đổi
và làm giảm đáng kể thời gian phát triển ứng dụng.
Kiểm tra Tài nguyên để biết thêm thông tin chi tiết liên quan đến DB2 9, XForms,
và Dịch vụ Web.
Các yêu cầu
Dưới đây là những yêu cầu cần thiết để hiểu rõ hơn về những thông tin được trình
bày trong bài viết này:
• Quen thuộc với DB2 9 và các tính năng pureXML. Kiểm tra Tài nguyên
của bài viết này để làm quen với các tính năng pureXML của DB2 9.
• Kinh nghiệm làm việc với RAD và về khả năng triển khai và gỡ bỏ các ứng
dụng bằng cách sử dụng môi trường thử nghiệm WebSphere Application
Server
• Quen thuộc với khái niệm phát triển các dịch vụ WEB

Về đầu trang
Yêu cầu hệ thống

Phát triển phía Máy chủ
1. DB2 9 với pureXML
Bạn cũng có thể sử dụng miễn phí DB2 Express-C. DB2 Express-C có thể
được chạy trên máy chủ dual-core CPUs, có đến 4 GB bộ nhớ, với thiết lập
hệ thống lưu trữ bất kỳ và không có giới hạn về kích thước cơ sở dữ liệu
hay bất cứ điều hạn chế nào khác. Kiểm tra ph
ần các nguồn cho các liên kết
để tải về Express-C.
2. RAD Version: 7.0.0 (hoặc mới hơn)
Lưu ý: Ví dụ này thông tin chi tiết các bước để kiểm tra kết quả, bằng cách
sử dụng phiên bản WebSphere Application Server 6.1.0.2 thử nghiệm mà đi
kèm với RAD. Bạn có thể chọn để xuất tập tin WAR và triển khai lên một
WebSphere Application Server duy nhất (phiên bản 6.1.0.2 và mới hơn). Ví
dụ sẽ không thành công trên phiên bản thấp hơn của WebSphere
Application Server.
Phía Client
• Mozilla Firefox 1.5.x hoặc mới hơn (tốt nhất là Firefox 2.0.x) với những
trình bổ sung (plugin) XForms.
Các XForms trình bổ sung có thể được cài đặt từ trang Add-on của trình
duyệt Firefox. Để cài đặt trình bổ sung XForms, chạy URL này sử dụng
Firefox 2.0.x, và chọn Cài đặt ngay bây giờ.

Về đầu trang
Thủ tục
Tổng hợp
Ví dụ này bạn đưa bạn đi qua các thế hệ của các dịch vụ WEB dành cho dữ liệu
XML bằng cách sử dụng phương pháp tiếp cận từ dưới lên. Việc cài đặt một
chương trình Java (FormServices.java) được xem như là một điểm bắt đầu.
Chương trình Java này có chứa thao tác truy cập dữ liệu và phương pháp cập nhật
đối vớ

i dữ liệu cột XML của cơ sở dữ liệu ví dụ DB2 9. Kiểm tra thanh công cụ có
tiêu đề "FormServices.java explained" cho một giải thích chi tiết về nội dung của
chương trình Java. Sau đó, chúng ta sẽ đưa ra những phương pháp trong chương
trình Java như các dịch vụ WEB sử dụng công cụ RAD. Cuối cùng, chúng ta sẽ
kiểm tra các dịch vụ WEB, sử dụng các Xforms được cung cấp.
Hãy xem xét theo từng bước
1. Tạo cơ sở dữ li
ệu ví dụ và bảng xmlcustomer
1. Tạo ra một cơ sở dữ liệu ví dụ về bảng mã UTF8 (nếu nó không tồn
tại), ví dụ:
DB2 tạo ví dụ db sử dụng codeset UTF8 của Hoa Kỳ

DB2 9 sử dụng bảng mã cơ sở dữ liệu UTF8 để tạo cột kiểu dữ liệu
XML.
2. Tại dấu nhắc lệnh DB2, tạo ra bảng xmlcustomer bằng cách sử dụng
các lệnh sau:
connect to sample
CREATE TABLE XMLCUSTOMER( CID INT NOT NULL PRIMARY KEY,
INFO XML )

Cột INFO có thể lưu trữ bất kỳ khuôn dạng XML nào.
Bạn có thể thử chèn bằng cách gõ lệnh sau tại dấu nhắ
c lệnh DB2:
insert into xmlcustomer values ( 9999, '<test/>');

2. Chạy RAD và tạo ra dự án "Dynamic Web Project."
1. Hãy chắc chắn rằng chúng ta đang ở trong ngữ cảnh Web. (nếu
không, chọn Window > Open Perspective > Web để tiến hành.)
2. Gõ "XForm" như là tên của dự án (chú ý chữ hoa).
3. Sử dụng các ngầm định và nhấp chuột vào nút Finish.


Hình 1. Tạo lập một dự án Web

3. Nhập các tập tin mã nguồn Java được cung cấp và thực hiện những
thay đổi cần thiết
1. Mở dự án XForm được tạo ra ở trên cho đến khi thấy thư mục Java
Resources.
2. Nhấp chuột phải và chọn New > package. Chỉ ra "com.ibm.test"
như là tên của gói ứng dụng (package) và nhấp chuột vào nút Finish.

Hình 2. Tạo ra package

3. Nhắp chuột phải trên gói vừa tạo và chọn Import > File System và
nhập vào FormServices.java (tệp mã nguồn Java cung cấp).

Giải thích chi tiết FormServices.java:
Mã nguồn Java FormServices.java bao gồm hai lớp:
• Lớp DB:
Lớp này xử lý về kết nối cơ sở dữ liệu. Lưu ý rằng chúng ta cần phải tạo ra
các thay đổi tới môi trường để chạy chương trình.
• Các phương thức:
Kết nối: Cho phép mã ứng dụng kết nối vào cơ sở dữ liệu DB2. Phương
thức kết nối sử dụng loại hình 4 trình điều khiển tổng hợp Java Database
Connectivity (JDBC).
Ngắt kết nối: Ngắt kết nối của ứng dụng từ cơ sở dữ liệu và giải phóng tài
nguyên JDBC.
• Lớp FormServices:
Lớp này có các phương thức để thao tác dữ liệu trong cơ sở dữ liệu và lấy
dữ liệu sẽ được hiển thị trên biểu mẫu(form). Những phương thức này được
đưa ra như các dịch vụ WEB. Có ba phương thức cơ bản cho phép thao tác

dữ liệu XML. Cả ba phương thức được lặp đi lặp lại để cho phép dữ liệu
XML để được x
ử lý như các chuỗi. Các phương thức được mô tả như sau:
• Các phương thức:
insertFormData: Phương thức này lấy dữ liệu XML nhập vào và ghi lại
chúng trong một cột XML của cơ sở dữ liệu DB2. Lưu ý rằng XML được
nhập nên là dữ liệu XML (ví dụ, không chuỗi thoát như &lt;).
retrieveFormData: Phương thức này lấy dữ liệu lưu trữ trong một cột
XML dựa trên duy nhất một khoá.
retrieveFormIDs: Phương thức này lấy ID và trả lại chúng XML phù hợp
với các XForm. Bạn có th
ể sử dụng phương thức này để tạo một thực đơn
(menu) thả xuống trong vòng một biểu mẫu giao diện.
Ba phương thức *AsString() có cùng một phương thức chủ yếu như trên,
nhưng thay vì chuyển giao dữ liệu XML trực tiếp, XML được chuyển đổi
thành một chuỗi ký tự. Vì vậy, <hello/> trở thành “&lt;hello/&gt;”. Những
phương thức thuận tiện được cung cấp để chúng ta có thể sử dụng WEB
service explorer xây dựng sẵn để kiểm tra nó.
genSOAPElement: Đây là một phương thức trợ giúp được sử dụng để
chuyển đổi các payload từ một chuỗi ký tự vào một SOAPElement.
genStringfromSOAP: Đây là một phương thức trợ giúp được sử dụng để
chuyển đổi các payload SOAPElement đến một chuỗi ký tự.



Hình 3. Nhập mã nguồn ví dụ FormServices.java

4. Tìm theo mẫu dưới đây //Thay đổi và thực hiện các thay đổi nếu cần
thiết, cho mỗi môi trường của bạn. Các chú thích trong các mã
nguồn này sẽ giúp hướng dẫn chúng ta thông qua các thay đổi.

5. Nếu chúng ta làm theo ví dụ này như trình bày, sự thay đổi cần thiết
sẽ là userid và mật khẩu trong lớp Cơ sở dữ liệu mà cũng được đánh
dấu bằng các mẫu //Thay đổi (như trên).
6. Hãy chắc chắn rằng mã nguồn dịch hoàn chỉnh và tất cả các nhập
vào đã được giải quyết. Điều này đòi hỏi chúng ta thêm db2jcc.jar
tới Java Build Path của dự án XForm.
7. Để thêm jar ngoài db2jcc.jar, nhấp chuột phải vào project và chọn
Properties > Java Build Path > Add External Jars > và chọn
db2jcc.jar từ sự cài đặt DB2(\sqllib\java).
5. Đưa ra các mã nguồn Java như là một dịch vụ WEB
4. Nhấn nút phải vào FormServices.java, sau đó nh
ấn Web Services >
Create Web Service. Nếu chúng ta không nhìn thấy thực đơn dịch
vụ WEB, hãy đọc để xem làm thế nào để kích hoạt nó.
5. Nếu chúng ta không nhìn thấy thực đơn dịch vụ WEB. Chúng ta có
thể cho phép các khả năng của các dịch vụ WEB của phiên làm việc.
Để làm như vậy, nhấn Windows > Preferences > Workbench >
Capabilities và kiểm tra Web Service Developer để thấy nó được
kích hoạt.

Hình 4. Tạo ra các dịch vụ WEB từ mã nguồn Java

3. Kiểm chứng rằng các thiết lập được hiển thị như dưới đây. Nhấn OK
trên các thông báo đưa ra.
Lưu ý: Khi các dịch vụ được tạo ra, có công cụ để liên kết các kiểu
dữ liệu Java khác nhau tới các kiểu XSD tương đương của nó như
được định nghĩa trong đặc tả kỹ thuật JAX-RPC. Máy xử lý IBM
WebSphere SOAP sẽ liên kết kiểu dữ liệu
javax.xml.soap.SOAPElement trong chương trình Java tới XML
schema xsd: anyType trong WSDL. Tuy nhiên, đặc tả kỹ thuật JAX-

RPC hiện nay không xác định các tiêu chuẩn Java đối với liên kết
cho xsd: anyType. Việc triển khai cài đặt JAX-RPC không bắt buộc
phải hỗ trợ xsd: anyType. Ví dụ này có thể không hoạt động trên các
máy SOAP khác và đã không được kiểm tra trên các máy SOAP
khác.

Hình 5. Xem xét lại các thiết lập dịch vụ WEB

4. Nhấn vào Next cho đến khi chúng ta nhìn thấy thực đơn để lựa chọn
các dịch vụ cần phải được kích hoạt. Hãy đảm bảo rằng tất cả các
dịch vụ được kiểm tra để được đưa ra như là một dịch vụ web, và
sau đó nhấn vào Finish.

Lưu ý: nhấn OK để đến cảnh báo đưa ra (xem ghi chú ở trên để có
giải thích chi tiết).

Hình 6. Chọn phương pháp đưa ra các dịch vụ WEB

5. Nhấn Start Server nếu chúng ta được nhắc nhở để làm điều đó. Các
dịch vụ tạo ra sẽ được đưa ra trên các WebSphere Application
Server thử nghiệm.
5. Chạy thử XForms trên WebSphere Application Server thử nghiệm
1. Trước khi kiểm tra ứng dụng XForms, cần đảm bảo các tập tin JAR
yêu cầu được cài đặt các phiên bản chính xác bằng cách sử dụng loại
4 JDBC driver để kết nối với DB2.
1. Đi đến thư mục cài đặt ứng dụng WebSphere Application
Server và kiểm tra xem có các tập tin sau: db2jcc.jar,
db2jcc_license_cu.jar. (Ví dụ, trong trường hợp sau đây, tôi
đã có để cài đặt các tập tin JAR trong "C:\Program
Files\IBM\SDP70\runtimes\base_v61\lib'".)

2. N
ếu các tập tin JAR không ở đó, sao chép các tập tin JAR
trên và bảo đảm khởi động lại hệ thống máy chủ WebSphere
Application Server.
2. Trước khi chạy XForms với các dịch vụ tạo ra trong bước trước, bạn
cần phải cài đặt các SOAPForwarding servlet trên cùng một máy chủ
ứng dụng WebSphere Application Server. Tệp tin này
(SOAPResolution.war) được cung cấp như một phần của việc tải
xuống bao gồm trong mục Tải xuống của tài liệu này.
Bước này là s
ự thu xếp một khoảng cách dừng lại như XForms Add-
on của Mozilla hiện không tạo ra các lời gọi SOAP hợp lệ. Bước này
là không cần thiết một khi lỗi này sẽ được chỉnh sửa trong một bản
phát hành sau này của Mozilla XForms Add-on. Khi bài viết này
được viết, dịch vụ WEB gọi sử dụng Firefox Xforms phiên bản
0.7.0.1 đã thiếu tiêu đề SOAPAction. SOAPForwarding servlet này
chỉ cần thêm tiêu đề SOAPAction đó là cần thiết.
1. Nhắp nút phải trên
XformEAR và chọn Import > war file.
2. Duyệt qua các hệ thống tập tin để lựa chọn tập tin
SOAPResolution.war được cung cấp. Tên của dự án Web sẽ
tự động điền vào như được hiển thị sau đây. Hãy chắc chắn
rằng nó sẽ được thêm vào dự án XFormEAR hiện có.

Hình 7. SOAPResolution WAR

3. Nhấn vào Finish để nhập vào servlet.
6. Kiểm tra các dịch vụ WEB bằng cách sử dụng chương trình thám hiểm
RAD's built-in Web Services
1. Bây giờ chúng ta đã triển khai và bắt đầu ứng dụng thành công, bây

giờ là lúc để kiểm tra triển khai các dịch vụ.
2. Nhấn chuột phải vào FormServices.wsdl trên RAD và chọn Kiểm
tra với Web services explorer.
3. Chỉ định endpoint, như được hiển thị, với số cổng đúng và thử ra bất
kỳ một trong các phương pháp mà kết thúc với *AsString. Trong ví
dụ này, có ba phương pháp mà kết thúc với
*AsString mà trả về
XML như các chuỗi ký tự thoát. Hầu hết các trình duyệt thích chọn
XML như chuỗi thoát (&lt; instead of “<” ). Tuy nhiên, XForms
thích các giá trị XML thực sự. Ba phương pháp khác (không có
*AsString ) là giống nhau trong các chức năng với *AsString, nhưng
chúng trả về dữ liệu XML thực tế.

Hình 8. Kiểm tra các dịch vụ *AsString bằng cách sử dụng Web services
explorer

7. Kiểm tra các dịch vụ WEB XML bằng cách sử dụng XForms
1. Khởi chạy các XForms được cung cấp với bản trình diễn.
Nhấp nút phải vào xmlcustomer.xhtml tệp cung cấp và chọn Open
with Firefox. Bước này giả định rằng bạn có cài đặt trình bổ sung
XForms như được chỉ ra trong phần Điều kiện tiên quyết của tài liệu
này. Chúng ta nên xem XForm như được hiển thị trong màn hình
chụp dưới đây.
2. Hãy chắc chắn rằng chúng ta chỉ định một "Id Val" và nhập / sửa đổi
tên, và như vậy là cần thiết.
3. Sử dụng xmlcustomer Form, chỉ ra một ID trong Id Val và ấn
Submit.
Id Val chỉ ra là duy nhất với cột CID của bảng XMLCUSTOMER
trong DB2.
4. Khi chúng ta ấn Submit, XForm làm cho dịch vụ Web gọi tới dịch

vụ insertFormData, để chèn các dữ liệu người dùng của biểu mẫu
như là một thể hiện XML vào DB2.
Nếu có một lỗi, hoặc nếu không có gì xảy ra, xem phần "Gỡ lỗi" đối
với các nguyên nhân có thể và các gợi ý.

Troubleshooting tips
XForms:
Nếu bạn bấm "Submit" và không có gì sẽ xả
y ra:
• Trên trình duyệt Firefox, hãy vào Tools > điều khiển Java tập lệnh
(script) để xem nếu có bất kỳ lỗi nào ở bên ngoài các lỗi stylesheet.
• Nếu chúng ta nhìn thấy XForms Error (14): kiểm tra an toàn thất bại! Hãy
cố gắng để gửi dữ liệu vào một tên miền khác với trên tài liệu:
Mở rộng Mozilla XForms không cho phép gửi qua tên miền theo mặc định.
Hãy kiểm tra liên kết sau đây url để biết thêm chi tiết. Để kích hoạt tính
năng gửi qua tên miền, hãy tìm một tập tin gọi là "hostperm.1" và thêm
dòng này vào tập tin "host xforms-xd 3 scheme:file". (Chúng ta nên xem
các dòng tương tự như này.) Tập tin hostperm.1 nằm trong thư mục
C:\Documents and Settings\Administrator\Application
Data\Mozilla\Firefox\Profiles\m6g6ho0d.default, nh
ưng đường dẫn của bạn
có thể khác. Sau đó, khởi động lại trình duyệt.
WebSphere Application Server:
Nếu ứng dụng XForm.war không khởi động được, hãy kiểm tra xem các nhật ký
hệ thống. Về Microsoft ® Windows systems, thư mục mặc định là C:\Program
Files\IBM\SDP70\runtimes\base_v61\profiles\AppSrv01\logs\server1.
Các sự cố phức tạp:
Một cách rất tốt để tìm ra khi nào chúng ta đang đối phó với một vấn đề máy chủ
hoặc một vấn đề máy khách là cần phải xem những gì đang được gửi đến
WebSphere Application Server từ xform trên đường kết nối. Chúng ta có th

ể làm
điều này bằng cách sử dụng một TCP giám sát như
Chuyển hướng các XForms gửi hành động tới một số cổng TCP mới nơi mà giám
sát TCP đang chạy và có TCP theo dõi trực tiếp các tin nhắn đến máy chủ.
Ví dụ:
Chạy chương trình giám sát TCP tại localhost:8080 với máy chủ chỉ tới
localhost:9081. Bây giờ tất cả các thay đổi xuất hiện của localhost:9081 xform ví
dụ được cung cấp tới localhost:8080. B
ằng cách này, tất cả các lần gửi sẽ được
gửi đi thông qua các TCP theo dõi, chương trình giám sát sẽ hiển thị những gì
đang được gửi đi.
Hãy chắc chắn rằng bức tường lửa của chúng ta không chặn bất kỳ thông tin liên
lạc nào.

Hình 9. Kiểm tra việc chèn thêm dịch vụ bằng cách sử dụng một xform

5. Nếu không có lỗi, chúng ta nên xem biểu mẫu nhận được. Chỉ ra
cùng một ID như được xác định trên việc chèn và bấmRetrieve.
6. Thời điểm này, các xform tạo ra một dịch vụ WEB gọi đến dịch vụ
retrieveFormData, để lấy dữ liệu người sử dụng từ DB2 như là một
thể hiện XML và liên kết nó vào xform.

Hình 10. Kiểm tra dịch vụ nhận được sử dụng một xform


Về đầu trang
Kết luận
Chúng ta vừa thấy làm thế nào để tạo ra các dịch vụ WEB theo tiếp cận từ dưới lên
cho dữ liệu XML trong DB2 pureXML. Những dịch vụ này có thể lưu trữ và lấy ra
dữ liệu XML nhập vào và từ DB2 9 bằng cách sử dụng SOAP qua các dịch vụ

WEB HTTP. Các dịch vụ có thể chèn vào và lấy ra XML như các chuỗi thoát hoặc
như các XML thực tế trên kết nối. Chúng ta có thể sử
a đổi mã nguồn Java cho phù
hợp với những nhu cầu cụ thể, và bất kỳ phương pháp nào đều có thể được đưa ra
như các dịch vụ WEB. Các dịch vụ WEB có thể phục vụ như các điểm kết thúc
cho bất kỳ ứng dụng khách mà có thể thực hiện SOAP qua HTTP, để lấy ra và lưu
trữ dữ liệu vào cơ sở dữ liệu.


×