DEPLOYMENT DESCRIPTOR (WSDD)
Tới thời điểm này, chúng ta đã thực hiện xong hai phần quan trọng nhất của service là interface và mã cài đặt của interface. Bây giờ, chúng ta sẽ ghép các phần này lại với nhau và đưa chúng ra thế giới bên ngoài thông qua một Web server hỗ trợ Grid service (Grid service container). Quá trình được gọi là quá trình triển khai (deployment) Grid service.
Một trong những thành phần chính yếu của bước này là bản mô tả triển khai (deployment descriptor). Đây là một file đặc tả viết dưới dạng WSDD để hướng dẫn cho Web server cách xuất bản (publish) Grid service. Bản mô tả triển khai của MathService như sau:
File :
irst/server- deploy.wsdd <?xml version="1.0"?> <deployment name="defaultServerConfig" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java ">
<!—-Vi tri Grid service, lien ket URL cua Web server se tao thanh mot GSH hoan chinh-->
<service name="progtutorial/core/first/MathService"
provider="Handler" style="wrapped ">
<!—Ten dung de mo ta service-->
<parameter name="name" value="MathService"/>
<parameter name="className"
value="org.globus.progtutorial.stubs.MathService.MathPortType" />
<!-- Tham khao den cac lop trien khai interface cua service,luu y file Math_service.wsdl la file WSDL chuan duoc phat sinh tu dong boi GT3 tu file Math.gwsdl
-->
<parameter name="baseClassName"
value="org.globus.progtutorial.services.core.first.impl.MathImpl <parameter name="schemaPath"
value="schema/progtutorial/MathService/Math_service.wsdl"/>
<!—Cac tham so chung cho hau het Grid service -->
<parameter name="allowedMethods" value="*"/> <parameter name="persistent" value="true"/> <parameter name="handlerClass" value="org.globus.ogsa.handlers.RPCURIProvider" /> </service > </deployment> "/>
4.1 Tạo file GAR với công cụ Ant
Đến lúc biên dịch và đóng gói các file đã tạo ra ở trên để có thể xuất bản ra thế giới bên ngoài. Tất cả các file và các thông tin cần thiết để một Grid service container có thể triển khai Grid service đều được đưa một vào một file Grid Archive, hay file GAR.
Việc tạo một file GAR bao gồm các bước sau:
+ Chuyển đổi file GWSDL thành file WSDL. + Tạo các lớp cuống (stub class) từ file WSDL.
+ Biên dịch các lớp cuống.
+ Biên dịch các mã cài đặt của service.
+ Sắp xếp các file trong một cấu trúc thư mục đặc biệt.
Các bước này có thể làm bằng tay, tuy nhiên đã có một công cụ rất mạnh để tự động thực hiện việc này, đó là Ant. Ant sử dụng các hướng dẫn trong một build file (giống như Makefile trong các dự án phần mềm trên Linux) để thực hiện các công việc của mình. Hình 4-4 cho thấy các file mà Ant sử dụng để phát sinh file GAR :
Hình 3-1 Các file cần thiết để triển khai Grid Service với Ant.
Ant sử dụng các file của GT3, các file do chúng ta tạo ra và file build.xml (file hướng dẫn của Ant) để phát sinh ra file GAR. Chi tiết về Ant, xin tham khảo tại website : http://ant.apache.or g .
Trong ví dụ này có thể thực hiện lệnh sau đây để phát sinh file GAR. Vào thư mục : $GRIDSER_DEMO Thực hiện lệnh :
./tutorial_build.sh \
org/globus/progtutorial/services/core /first \
schema/progtutorial/MathService/Math. gwsdl
Sau khi biên dịch thành công, chúng ta sẽ có file GAR :
$GRIDSER_DEMO/build/lib/org_globus_progtutorial_services_core_first.gar
Chúng ta chỉ cần thực hiện lệnh sau:
ant deploy \ -
Dgar.name=$GRIDSER_DEMO/build/lib/org_globus_progtutorial_services_core_firs t.gar
Đến đây chúng ta đã có thể xây dựng và triển khai một Grid service hoàn chỉnh. Tiếp theo chúng sẽ xây dựng một client đơn giản để sử dụng service MathService.
4.3 Xây dựng client
Client chúng ta xây dựng là một chương trình chạy trên console, với 2 tham số đầu vào là:
+ Giá trị cần cộng vào.
Dưới đây là mã nguồn của file client :
$GRIDSER_DEMO/org/globus/progtutorial/clients/MathServ ice/Client.j ava
package org.globus.progtutorial.clients.MathService; import
org.globus.progtutorial.stubs.MathService.service.MathServiceGridLoc at or;
import org.globus.progtutorial.stubs.MathService.MathPortType; import java.net.URL;
public class Client {
public static void main(String[] args) {
try {
// Lay cac tham so dong lenh
URL GSH = new java.net.URL(args[0]); int a = Integer.parseInt(args[1]);
// Lay GSR cua service instance
MathServiceGridLocator mathServiceLocator = new MathServiceGridLocator()
;
MathPortType math = mathServiceLocator.getMathServicePort(GSH);
// Goi phuong thuc o xa 'add'
math.add(a);
System.out.println("Added " + a);
// Lay gia tri hien hanh cua service qua phuong thuc 'getValue'
int value = math.getValue();
System.out.println("Current value: " + value); }catch(Exception e) { System.out.println("ERROR!"); e.printStackTrace(); } } }
Việc xây dựng một client rất đơn giản và dễ hiểu.
Từ đây, chúng ta đã có thể xây dựng các ứng dụng Grid với các Grid service. GT3 cũng cung cấp giao diện lập trình để sử dụng các service có sẵn như WS-GRAM, GSI,… Việc lập trình sử dụng các service này chưa được trình bày ở đây, nhưng với các kỹ thuật đã có, cùng với việc tham khảo tài liệu về API của GT trên website : www.g l obus.org sẽ là tiền đề thuận lợi để sử dụng hiệu quả các service này.