Nếu thiết lập tường lửa, cần phải mở các cổng TCP sau đây để lắng nghe các dịch vụ và thành phần của Globus Toolkit.. Bước 1: Định nghĩa giao diện dịch vụ Bước đầu tiên để viết một dịch
Trang 1Chương này mô tả quá trình cài đặt và cấu hình Globus Toolkit 4.0 Chúng tôi
sẽ triển khai cài đặt Globus Toolkit trong mạng gồm 3 máy tính Các vấn đề chínhtrong chương này gồm có:
• Download Globus Toolkit 4.0
• Các gói tin của Globus Toolkit 4.0
• Mô hình môi trường mạng Grid
• Cài đặt Globus Toolkit 4.0
• Cấu hình và thử nghiệm môi trường Grid
• Gỡ bỏ Globus Toolkit 4.0
1.1 Download Globus Toolkit 4.0
Globus Toolkit 4.0 là phần mềm mã nguồn mở hỗ trợ nhiều hệ điều hành Cácgói tin binary hỗ trợ môi trường Windows, Linux (SuSE Linux 9/8, Red Hat Linux 9,Fedora Core 2/3 và Debian 3.1) và Solaris 9 Việc biên dịch GT4 từ các gói tin nguồn
có thể hỗ trợ thêm các hệ điều hành AIX và Mac OS X Các thành phần phát triển trênnền tảng Java như WSRF hoặc WS Java Core đều tương thích với các hệ điều hành hỗtrợ Java, trong đó có Windows Hiện nay, việc sử dụng hệ điều hành Linux để pháttriển môi trường Grid đang trở nên phổ biến Vì vậy, chúng tôi sử dụng hệ điều hànhFedora Core 3 để phát triển môi trường Grid Các gói tin sử dụng là các gói tin binary.Truy cập địa chỉ: http://www.globus.org/toolkit/downloads/4.0.0/ để download các góitin này
Gói tin GT4 cho Fedora Core 3 là: gt4.0.0-ia32-fedora3-binary-installer.tar.gz
1.2 Mô hình môi trường mạng Grid
Chúng tôi sử dụng 3 máy tính để cài đặt môi trường mạng Grid
Hình 23: Mô hình mạng Grid
Các máy tính bao gồm:
Trang 2• CA: Đây là nơi chứng thực quyền hạn Do đó, chúng tôi sử dụng SimpleCA cósẵn trong gói tin GT4.
• Host A, Host B: là các nốt mạng Grid Chúng tôi cài đặt gói tin GT4 cho cácnốt này
Host A và Host B sử dụng hai tên người dùng khác nhau là auser1 và buser1,nhưng chúng cùng chia sẻ một ID người dùng chung là:
/O=Grid/O=Globus/OU=gridk47.com/CN=grid user 1
Bảng 7.2a mô tả các máy tính của mạng Grid
Tên máy Tên host Chức năng Hệ điều hành Gói tin cài
Grid
Fedora Core 3 Gói GT4
binaryHost B hostb.gridk47.com Nốt mạng
Bảng 7.2b: Phiên bản các phần mềm sử dụng
1.3 Cài đặt Globus Toolkit 4.0
Chương này mô tả thứ tự các bước để cài đặt Globus Toolkit 4.0
1.3.1 Cài đặt các phần mềm yêu cầu cho Globus Toolkit 4.0
Trước khi cài đặt Globus Toolkit 4.0, cần cài đặt các phần mềm sau:
Tên phần mềm Phiên bản
Trang 3[root@hosta]# rpm -ivh jdk-1_5_0_06-linux-i586-rpm.rpm
• Để thiết lập biến môi trường cho Java SDK, mở tệp /etc/profile và thêm đoạn sau:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
• Để biến môi trường hoạt động, đóng tệp /etc/profile và chạy lệnh:
[root@hosta]# etc/profile
• Để kiểm tra Java SDK đã được cài đặt thành công, dùng lệnh:
[root@hosta]# java version
b - Cài đặt Apache Ant
Để cài đặt Apache Ant:
• Lấy gói tin Apache Ant tài địa chỉ: http://ant.apache.org/
• Bung tệp nén Apache Ant:
[root@hosta]# tar xvzf apache-ant-1.6.3-bin.tar.gz -C /usr/local
• Thiết lập biến môi trường cho Apache Ant, mở tệp /etc/profile và thêm đoạn sau:
Trang 4[root@hosta]# ant version
1.3.2 Cấu hình môi trường Linux cho Globus Toolkit 4.0
Trước khi cài đặt Globus Toolkit, cần cấu hình một số thứ trong môi trườngFedora Core 3 đang sử dụng trên các máy tính trong mạng
a-Thêm tài khoản người dùng
Trong Fedora, sử dụng lệnh: adduser để thêm một người dùng mới Ví dụ: adduser auser1 để thêm người dùng auser1 Bảng sau đây là những người dùng cần
thêm vào trong các máy tính trên mạng
Tên host Tên người dùng
Bảng 7.3b: Danh sách người dùng trên các máy tính b- Thiết lập thời gian
Trong mạng Grid computing, việc đồng bộ hoá thời gian giữa các máy tínhvới nhau là rất quan trọng Nếu thời gian không được đồng bộ, khi dùng chứng thựcGSI sẽ xảy ra lỗi Do đó, chúng tôi thiết lập time server là NTP cho môi trường Gridcủa mình và thiết lập thời gian cho tất cả các máy tính trong hệ thống
• Thực hiện tương tự với 2 máy Host A và Host B:
server (địa chỉ IP của CA) # time server
driftfile /etc/ntp/drift
• Trên tất cả các máy, cầu hình ntp deamon bằng cách dùng lệnh:
[root@hosta]# chkconfig ntpd -on
• Bắt đầu chạy dịch vụ ntp
Trang 5[root@hosta]# service ntpd start
• Để kiểm tra thời gian đã được đồng bộ hay chưa, dùng lệnh ntpq Nếu có dấu sao(*) đằng trước tên host thì cấu hình NTP đã thành công:
[root@hosta]# ntpq -p
remote refid st t when poll reach delay offset jitter
==========================================
*ca.gridk47.com LOCAL(0) 6 u 516 1024 377 0.931 -2.258 0.262
c- Thiết lập tường lửa
Ở đây cúng tôi không thiết lập tường lửa Nếu thiết lập tường lửa, cần phải
mở các cổng TCP sau đây để lắng nghe các dịch vụ và thành phần của Globus Toolkit
Bảng 7.3c: Các cổng TCP cần mở khi thiết lập tường lửa
1.3.3 Cài đặt Globus Toolkit 4.0
Để cài đặt Globus Toolkit 4.0, chúng tôi sử dụng gói tin Binary cho FedoraCore 3
• Lấy gói tin binary, vào địa chỉ:
http://www.globus.org/toolkit/downloads/4.0.0/
• Vào người dùng globus, bung tệp nén binary:
[globus@hosta]$ tar xvzf gt4.0.0-ia32-fedora3-binary-installer.tar.gz \
-C /tmp
• Thiết lập biến môi trường cho thư mục chứa Globus:
[globus@hosta]$ export GLOBUS_LOCATION=/usr/local/globus-4.0.0
• Thay đổi quyền hạn của thư mục này cho người dùng globus:
[globus@hosta]$ su
Password:
Trang 6[root@hosta]# mkdir $GLOBUS_LOCATION
[root@hosta]# chown globus:globus $GLOBUS_LOCATION
[globus@hosta]$ /configure prefix=$GLOBUS_LOCATION
checking for javac /usr/local/java/j2sdk1.5.0/bin/javac
checking for ant /usr/local/apache-ant-1.6.3/bin/ant
configure: creating /config.status
config.status: creating Makefile
[globus@hosta]$ make 2>&1 | tee build.log
cd gpt-3.2autotools2004 && OBJECT_MODE=32 /build_gpt
build_gpt ====> installing GPT into /usr/local/globus-4.0.0
(Bỏ qua thông tin)
[globus@hosta]$ make install
ln -s /usr/local/globus-4.0.0/etc/gpt/packages
/usr/local/globus-4.0.0/etc/globus_packages
/usr/local/globus-4.0.0/sbin/gpt-postinstall
(Bỏ qua thông tin)
config.status: creating fork.pm
Done
1.4 Cấu hình và thử nghiệm môi trường Grid
Sau khi cài đặt xong Globus Toolkit, cần phải cấu hình môi trường grid Đểcấu hình môi trường grid, cần cấu hình các thành phần sau:
• Cấu hình các biến môi trường
Trang 7• Cấu hình bảo mật
• Cấu hình Java WS Core
• Cấu hình và kiểm tra GridFTP
1.4.1 Cấu hình các biến môi trường
Để tất cả các người dùng đều có thể sử dụng các biến môi trường của Grid.Chẳng hạn: GLOBUS_LOCATION, mở tệp /etc/profile và thêm đoạn:
a- Cài đặt các gói tin CA
Vào tài khoản người dùng globus tại máy CA
Để cài đặt simpleCA, dùng lệnh setup-simple-ca và thực hiện các bước:
[globus@ca]$ $GLOBUS_LOCATION/setup/globus/setup-simple-ca
WARNING: GPT_LOCATION not set, assuming:
GPT_LOCATION=/usr/local/globus-4.0.0
C e r t i f i c a t e A u t h o r i t y S e t u p
This script will setup a Certificate Authority for signing Globus users
certificates It will also generate a simple CA package that can be
distributed to the users of the CA.
The CA information about the certificates it distributes will be kept in:
/home/globus/.globus/simpleCA/
/usr/local/globus-4.0.0/setup/globus/setup-simple-ca: line 250: test: res:
integer expression expected
The unique subject name for this CA is:
Trang 8cn=Globus Simple CA, ou=simpleCA-ca.gridk47.com, ou=GlobusTest, o=Grid
Do you want to keep this as the CA subject (y/n) [y]: y
Enter the email of the CA (this is the email where certificate requests will be sent to be signed by the CA): ca@gridk47.com
The CA certificate has an expiration date Keep in mind that once the CA
certificate has expired, all the certificates signed by that CA become invalid.
A CA should regenerate the CA certificate and start re-issuing ca-setup
packages before the actual CA certificate expires This can be done by
re-running this setup script Enter the number of DAYS the CA certificate
should last before it expires.
[default: 5 years (1825 days)]: (type the number of days)1825
Enter PEM pass phrase: (nhập mật khẩu chứng thực)
Verifying - Enter PEM pass phrase: (nhập mật khẩu chứng thực)
(Bỏ qua thông tin)
setup-ssl-utils: Complete
b- Thiết lập bảo mật cho các nốt mạng
Sau khi cài đặt simpleCA, một gói tin được tạo ra để cấu hình bảo mật cho cácnốt mạng khác Sao các gói tin này vào mỗi nốt mạng
• Vào tài khoản globus trên các máy Host A và Host B, sao chép gói tin tại máy CA
Trang 9/globus_simple_ca_[ca_hash]_setup/setup-gsi -default
c- Đăng ký và xác nhận chứng thực host
Mỗi host khi tham gia mạng grid đều phải đăng ký chứng thực và được CAxác nhận chứng thực Ví dụ để đăng ký chứng thực cho Host A
• Vào tài khoản root, yêu cầu đăng ký chức thực với tên host là hosta
[root@hosta]# grid-cert-request -host hosta
grid-ca-[globus@ca]$ grid-ca-sign -in hostcert_request.pem -out hostcert.pem
To sign the request
please enter the password for the CA key: (nhập mật khẩu chứng thực)
The new signed certificate is at:
Để đăng ký chứng thực:
[auser1@hosta]$ grid-cert-request
Enter your name, e.g., John Smith: grid user 1
A certificate request and private key is being created.
You will be asked to enter a PEM pass phrase.
This pass phrase is akin to your account password,and is used to protect your
Trang 10key file.
If you forget your pass phrase, you will need to obtain a new certificate.
Generating a 1024 bit RSA private key
++++++
++++++
writing new private key to '/home/auser1/.globus/userkey.pem'
Enter PEM pass phrase: (nhập mật khẩu chứng thực)
Verifying - Enter PEM pass phrase: (nhập lại mật khẩu chứng thực)
Để xác nhận chứng thực người dùng
• Chép tệp /home/auser1/.globus/usercert_request.pem từ máy Host A sang máy CA
• Tại máy CA, vào tài khoản globus, xác nhận chứng thực bằng cách dùng lệnh ca-sign
grid-[globus@ca]$ grid-ca-sign -in usercert_request.pem -out usercert.pem
To sign the request
please enter the password for the CA key:
The new signed certificate is at:
/home/globus/.globus/simpleCA//newcerts/02.pem
Chép tệp usercert.pem đè lên tệp đã có sẵn tại thư mục /home/auser1/.globus/
ở Host A
• Để kiểm tra người dùng đã được chứng thực, vào tài khoản auser1 và dùng lệnh:
grid-proxy-init -debug -verify
[auser1@hosta]$ grid-proxy-init -debug -verify
User Cert File: /home/auser1/.globus/usercert.pem
User Key File: /home/auser1/.globus/userkey.pem
Trusted CA Cert Dir: /etc/grid-security/certificates
Output File: /tmp/x509up_u511
Trang 11Proxy Verify OK.
e- Ánh xạ người dùng local với người dùng grid
Globus Toolkit 4.0 yêu cầu ánh xạ giữa người dùng được xác thực grid vớingười dùng local
• Để lấy tên người dùng được xác thực grid, dùng lệnh grid-cert-request
[auser1@hosta]$ grid-cert-info -subject -f /home/auser1/.globus/usercert.pem /O=Grid/OU=GlobusTest/OU=simpleCA-
Trang 12• Để xem thông tin người dùng được ánh xạ, mở tệp /etc/grid-security/grid-mapfile
"/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/OU=gridk47.com/CN=grid user 1" auser1
• Để kiểm tra tệp ánh xạ, dùng lệnh: grid-mapfile-check-consistency
[root@hosta]# grid-mapfile-check-consistency
1.4.3 Cấu hình Java WS Core
Để kiểm tra Java WS Core đã được cài đặt thành công, thực hiện như sau:
• Vào tài khoản globus, thực hiện lệnh:
globus-start-container
hoặc
globus-start-container –nosec
nếu chạy ở chế độ không bảo mật
• Sau khi tiến trình hoàn thành, xuất hiện thông điệp như sau:
1.4.4 Cấu hình và kiểm tra GridFTP
Phần này mô tả việc cài đặt và thử nghiệm với GridFTP
a- Cài đặt GridFTP
• Để cài đặt GridFTP, gán dịch vụ GridFTP với tên gsiftp và cổng TCP là 2811 bằngcách mở tệp /etc/services và thêm dòng:
gsiftp 2811/tcp # GridFTP
Trang 13• Tạo tệp /etc/xinetd.d/gsiftp với nội dung sau:
service gsiftp
{
instances = 100 socket_type = stream wait = no
user = root env += GLOBUS_LOCATION=/usr/local/globus-4.0.0 env += LD_LIBRARY_PATH=/usr/local/globus-4.0.0/lib server = /usr/local/globus-4.0.0/sbin/globus-gridftp-server server_args = -i
log_on_success += DURATION nice = 10
disable = no }
• Khởi động lại xinetd daemon:
[root@hosta]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
b- Thử nghiệm GridFTP
Tiến hành các bước thử nghiệp GridFTP
• Vào tài khoản người dùng đã được chứng thực quyền hạn bởi máy CA Ví dụ:auser1
• Dùng lệnh: grid-proxy-init để khởi tạo proxy
• Dùng lệnh globus-url-copy <URL nguồn> <URL đích> để kiểm tra hoạt động củaGridFTP
Trang 141.5 Gỡ bỏ Globus Toolkit 4.0
Phần này hướng dẫn gỡ bỏ bộ công cụ Globus Toolkit 4.0 Để thực hiện gỡ
bỏ, thực hiện các bước sau:
• Đóng WS Core nếu đang chạy
• Vào tài khoản root, xoá các thư mục chứa globus tookit, grid security và apache ant
[root@hosta]# rm -rf /usr/local/globus-4.0.0/
[root@hosta]# rm -rf /etc/grid-security/
[root@hosta]# rm -rf /usr/apache-ant-1.6.3/
• Xóa các biến môi trường đã khởi tạo trong tệp /etc/profile
• Xóa dịch vụ GridFTP bằng cách xóa dòng: gsiftp 2811/tcp trong tệp: /etc/services
• Xóa GridFTP daemon bằng việc thực hiện lệnh:
Trang 15Chương 2.Các bước lập trình một chương trình Grid
Chương này, chúng tôi sẽ lấy một chương trình có sẵn, rất đơn giản, đó làchương trình Math Service, để mô tả các bước lập trình một dịch vụ Grid trên GridComputing Chương trình được viết trên nền ngôn ngữ Java
2.1 Giới thiệu sơ lược về chương trình Math Service
Math Service là một dịch vụ Web đơn giản có trạng thái, sử dụng WSRF đểlưu trữ các trạng thái thông tin Nó cho phép người dùng thực hiện các phép toán:
• Phép toán cuối (string)
Ta cũng thêm một phép toán "Get Value" để truy cập vào giá trị RP Logic củaMath Service rất đơn giản Khi một tài nguyên mới được tạo ra, mọi "giá trị" RP đềuđược khởi tạo bằng 0, và "phép toán cuối" RP được khởi tạo là "NONE" Các phép
toán cộng và trừ chỉ cần một tham số nguyên Tham số này được cộng/trừ với "giá trị"
RP, và theo đó "phép toán cuối" RP được thay đổi bằng "ADDITION" hoặc
"SUBTRACTION" Ngoài ra, các phép toán cộng/ trừ không trả lại giá trị
2.2 Các bước lập trình chương trình Math Service
Đối với chương trình Math Service nói riêng và một chương trình dịch vụGrid nói chung, nhìn chung có 5 bước lập trình Các bước gồm có:
• Định nghĩa giao diện dịch vụ Sử dụng WSDL
• Thực thi dịch vụ Sử dụng Java
• Định nghĩa các tham số của việc triển khai Sử dụng WSDD và JNDI
• Biên dịch và tạo tệp GAR Sử dụng Ant
• Triển khai dịch vụ Sử dụng GT4
Trang 16Trong phần này, chung tôi sẽ lần lượt mô tả các bước nêu trên
2.2.1 Bước 1: Định nghĩa giao diện dịch vụ
Bước đầu tiên để viết một dịch vụ Grid là định nghĩa giao diện dịch vụ Mộtdịch vụ Grid có nhiều người dùng tương tác Mỗi người dùng tương tác với dịch vụbằng cách gửi yêu cầu Dịch vụ tiếp nhận yêu cầu người dùng, xử lý yêu cầu và trả lạiđáp ứng yêu cầu của người dùng đó Giao diện dịch vụ để xác định những chức năng
mà dịch vụ có thể cung cấp cho người dùng Trong chương trình Math Service, giaodiện dịch vụ là những phép toán mà người dùng có thể yêu cầu đến dịch vụ Theo mô
tả bài toán ở trên, giao diện dịch vụ của chương trình Math Service gồm 3 phép toán:
cộng, trừ và lấy giá trị Giao diện dịch vụ còn gọi là port type (được viết là portType).
Một giao diện dịch vụ Web cũng như dịch vụ Grid được viết trong tệp dưới dạng.wsdl Đây là tệp mô tả giao diện dịch vụ Web/Grid Có 2 cách để viết tệp mô tả này:Cách 1: Định nghĩa giao diện bằng tệp Java, sau đó chuyển đổi tệp Java sang tệp wsdl.Giao diện dịch vụ Math Service viết bằng Java như sau:
public interface Math
{
public void add(int a);
public void subtract(int a);
public int getValueRP();
}
Cách 2: Viết trực tiếp một tệp wsdl Tệp mô tả giao diện wsdl có các thành phần sau:
• Phần HEADER: Đầy là phần định nghĩa tên, đường dẫn và namespace của dịch vụ
• Phần TYPES: Phần này định nghĩa các biến, kiểu biến và các thuộc tính tài nguyên
• Phần MESSAGES: Là phần định nghĩa các thông điệp mà người dùng và dịch vụtương tác với nhau
• Phần PORTTYPE: Là phần định nghĩa các phép toán mà người dùng và dịch vụtương tác với nhau
Tệp định nghĩa giao diện của chương trình Math Service đầy đủ như sau:
Trang 17<?xml version="1.0" encoding="UTF-8"?>
<definitions name="MathService"
targetNamespace="http://www.globus.org/namespaces/examples/core/MathService_instance"xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.globus.org/namespaces/examples/core/MathService_instance"
<! REQUESTS AND RESPONSES >
<xsd:element name="add" type="xsd:int"/>
Trang 18<xsd:element name="Value" type="xsd:int"/>
<xsd:element name="LastOp" type="xsd:string"/>
<xsd:element name="MathResourceProperties">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="tns:Value" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="tns:LastOp" minOccurs="1" maxOccurs="1"/>
Trang 19a- Thành phần Qnames
Trong dịch vụ Grid, QName là một tên bao gồm tên của namespace và tênlocal Ví dụ QName của Value RP là:
{http://www.globus.org/namespaces/examples/core/MathService_instance}Value
Sử dụng lớp MathQNames để định nghĩa rút gọn QName
Trang 20package org.globus.examples.services.core.first.impl;
import javax.xml.namespace.QName;
public interface MathQNames {
public static final String NS = "http://www.globus.org/namespaces/\ examples/core/MathService_instance";
public static final QName RP_VALUE = new QName(NS, "Value");
public static final QName RP_LASTOP = new QName(NS, "LastOp");
public static final QName RESOURCE_PROPERTIES = new
MathService thực thi 2 giao diện là Resource (mô tả tài nguyên dịch vụ Grid)
và ResourceProperties (mô tả các thuộc tính tài nguyên dịch vụ Grid)
Tài nguyên dịch vụ gồm 2 thành phần: Value: kiểu xsd:int và LastOp: kiểuxsd:string
/* Resource properties */
private int value;
private String lastOp;
Các phép toán: lấy giá trị và đặt giá trị được thực thi như sau:
/* Get/Setters for the RPs */
public int getValue() {
Trang 21public void setLastOp(String lastOp) {
public MathService() throws RemoteException {
this.propSet = new SimpleResourcePropertySet(
MathQNames.RESOURCE_PROPERTIES);
try { /* Initialize the RP's */
ResourceProperty valueRP = new ReflectionResourceProperty(
MathQNames.RP_VALUE, "Value", this);
this.propSet.add(valueRP);
setValue(0);
ResourceProperty lastOpRP = new ReflectionResourceProperty(
MathQNames.RP_LASTOP, "LastOp", this);
Hàm add() và getValueRP() thực thi các phép toán cộng và lấy giá trị:
public AddResponse add(int a) throws RemoteException {
value += a;
lastOp = "ADDITION";
return new AddResponse();
}
Trang 22public int getValueRP(GetValueRP params) throws RemoteException {
return value;
}
2.2.3 Bước 3: Định nghĩa việc triển khai dịch vụ.
Hai bước quan trọng để lập trình một dịch vụ Grid đã được tiến hành bao gồmđịnh nghĩa và thực thi dịch vụ Vậy làm thế nào để các Client có thể kết nối với dịch
vụ này? Bước 3 sẽ thực hiện công việc đó Định nghĩa việc triển khai dịch vụ nói choGrid container (là thành phần chứa các dịch vụ Grid, có trong bộ công cụ GlobusToolkit 4.0) biết được làm thế nào để quảng bá dịch vụ Math Service này Chẳng hạnnhư nói cho Grid container biết được địa chỉ URI của dịch vụ Tệp định nghĩa việctriển khai như sau:
<parameter name="allowedMethods" value="*"/>
<parameter name="handlerClass" value="org.globus.axis.providers.RPCProvider"/>
<parameter name="scope" value="Application"/>
<parameter name="providers" value="GetRPProvider"/>
<parameter name="loadOnStartup" value="true"/>
</service>
</deployment>
Các thành phần được định nghĩa bao gồm:
• service name: xác định địa chỉ URI của dịch vụ trong Grid container Ở đây là:
http://localhost:8080/wsrf/services/examples/core/first/MathService
Trang 23• className: xác định lớp thực thi giao diện dịch vụ
• tệp WSDL: xác định tệp định nghĩa giao diện dịch vụ wsdl
• Load on startup: cho phép dịch vụ được nạp khi khởi động Grid container
2.2.4 Bước 4: Biên dịch và tạo tệp GAR
Ở các bước trên, mỗi khi hoàn thành mỗi bước lại tạo ra mỗi loại thành phầnriêng rẽ Vậy làm thế nào để triển khai được các thành phần đó vào trong Gridcontainer cũng như biên dịch các tệp thực thi Java Bước này sẽ thực hiện việc tạo tệpnén GAR chứa các thành phần trên Chức năng của tệp GAR:
• Liên kết các tệp wsdl
• Khởi tạo và biên dịch các lớp từ các thành phần trong tệp wsdl
• Biên dịch các tệp thực thi Java
• Tổ chức các tệp lại với nhau trong một cấu trúc đường dẫn xác định
Công cụ Ant (có trong phần mềm Apache Ant đã cài đặt) có chức năng biên dịch vàtạo tệp GAR từ các thành phần ở trên Mô hình sau đây mô tả chức năng đó của Ant
Trang 24Hình 24: Chức năng tạo tệp GAR của công cụ Ant
Để tạo tệp GAR, ta dùng script globus-build-service có trong bộ GlobusService Build Tools (GSBT) tại http://gsbt.sourceforge.net/ Cấu trúc dòng lệnh để tạotệp GAR như sau:
./globus-build-service.sh -d <đường dẫn tới dịch vụ> -s <tệp WSDL của dịch vụ>
Đối với Math Service, dòng lệnh như sau:
./globus-build-service.sh \
-d org/globus/examples/services/core/first/ \
-s schema/examples/MathService_instance/Math.wsdl
2.2.5 Bước 5: Triển khai dịch vụ
Đây là bước để triển khai dịch vụ trong Grid container Việc triển khai dịch vụvào trong Grid container tương đương với việc bung tệp nén GAR được tạo ra ở bước
4 và đưa các thành phần thích hợp vào Grid container Thực hiện dòng lệnh sau:
globus-deploy-gar $EXAMPLES_DIR/org_globus_examples_services_core_first.gar
Trang 25Để xóa bỏ dịch vụ trong Grid container, dùng lệnh globus-undeploy-gar:
globus-undeploy-gar org_globus_examples_services_core_first
2.3. Chạy thử chương trình Math Service
Sau khi đã triển khai dịch vụ Math Service vào Grid container, khởi động Gridcontainer bằng lệnh: globus-start-container, dịch vụ sẽ bắt đầu hoạt động Nhận biếtdịch vụ đã hoạt động bằng địa chỉ URI của dịch vụ:
http://127.0.0.1:8080/wsrf/services/examples/core/first/MathService
Để kiểm tra hoạt động của dịch vụ, ta viết một Client đơn giản, gửi yêu cầuđến dịch vụ Math Service thực hiện các phép toán: cộng, trừ và lấy giá trị Lớp Clientđược viết như sau:
public class Client {
public static void main(String[] args) {
MathServiceAddressingLocator locator = new MathServiceAddressingLocator(); try {
String serviceURI=args[0];
EndpointReferenceType endpoint = new EndpointReferenceType();
endpoint.setAddress(new Address(serviceURI));
MathPortType math = locator.getMathPortTypePort(endpoint);
math.add(10); // Perform an addition
math.add(5); // Perform another addition
Trang 26• EndpointReferenceType: là đối tượng tham chiếu đến địa chỉ của tài nguyên dịchvụ.
• MathPortType: là đối tượng tham chiếu đến giao diện (gọi là portType) của dịch vụ
Chương trình trên sẽ thực hiện phép cộng 10, cộng 5, in ra kết quả, sau đó trừ
5 và in ra kết quả Biên dịch và chạy tệp Client, ta được kết quả: