Implementing CORBA Servers(Thực thi Server CORBA):

Một phần của tài liệu Báo cáo môn học Lập Trình Hệ Thống với Java Đề tài số 7 Tìm hiểu Lập trình phân tán trong Java (Trang 68)

- Hãy chắc chắn để sử dụng URL khi bắt đầu các máy chủ Di chuyển các lớp trong thư mục server vào máy chủ của bạn và bắt đầu đăng ký RMI và máy

6/ Implementing CORBA Servers(Thực thi Server CORBA):

- Nếu bạn đang phát triển 1 cơ sở hạ tầng CORBA, bạn sẽ nhận thấy Java là 1 ngôn ngữ thực thi tốt đối với các đối tượng CORBA server. Phần này mô tả cách thức thực thi 1 server CORBA bằng ngôn ngữ lập trình Java

- Chương trình ví dụ trong phần này thì đơn giản hơn phần trước. Giả sử ta cung cấp 1 dịch vụ cho phép tìm kiếm 1 thuộc tính của hệ thống trên 1 máy ảo Java. Sau đây là mô tả IDL:

interface SysProp {

string getProperty(in string name); };

- Ví dụ, chương trình kiểm nghiệm client của ta gọi tới server bằng lệnh: CORBA::String_var key = "java.vendor";

CORBA::String_var value = sysProp->getProperty(key);

->Kết quả là 1 chuỗi mô tả nhà cung cấp máy ảo Java đang thực hiện chương trình server. Code trình bày trong Ví dụ: 5-21

- Để thực thi server, bạn chạy lệnh idlj với lựa chọn -fall (mặc định thì lệnh idlj chỉ tạo ra client-side stubs): idlj -fall SysProp.idl

- Sau đó bạn mở rộng lớp SysPropPOA mà bộ biên dịch idlj tạo ra từ file IDL. Code như sau:

class SysPropImpl extends SysPropPOA {

public String getProperty(String key) {

return System.getProperty(key); }

68 Lập Trình Hệ Thống Với Java – Tìm hiểu lập trình phân tán trong Java

}

- Tiếp theo, viết 1 chương trình server thực hiện các nhiệm vụ sau: 1. Khởi động ORB.

2. Định vị và kích hoạt Portable Object Adaptor (POA). 3. Tạo lớp server thực thi

4. Sử dụng POA để chuyển tham chiếu tạm thời sang tham chiếu đối tượng CORBA.

5. In các IOR của nó.

6. Ràng buộc lớp server thực thi với Naming service. 7. Chờ lời gọi từ client.

- Bạn sẽ hiểu rõ hơn ở Ví dụ:5-20 với code đầy đủ, sau đây là những điểm lưu ý:

+Khởi động ORB:

ORB orb = ORB.init(args, null); +Kích hoạt POA:

POA rootpoa = (POA)

orb.resolve_initial_references("RootPOA"); rootpoa.the_POAManager().activate();

+ Khởi tạo đối tượng server và chuyển nó sang đối tượng CORBA: SysPropImpl impl = new SysPropImpl();

org.omg.CORBA.Object ref = rootpoa.servant_to_reference(impl);

+ Từ phương thức object_to_string ta thu được IOR và in nó ra: System.out.println(orb.object_to_string(impl)); + Bạn tham chiếu tới Naming Service :

org.omg.CORBA.Object namingContextObj =

orb.resolve_initial_references("NameService"); NamingContext namingContext =

NamingContextHelper.narrow(namingContextObj);

+ Sau đó bạn tạo tên mong muốn cho đối tượng, ở đây ta gọi đối tượng là SysProp

NameComponent[] path = {

new NameComponent("SysProp", "Object") };

+ Bạn dùng phương thức rebind để ràng buộc đối tượng với 1 tên để gọi: namingContext.rebind(path, impl);

+ Cuối cùng, bạn chờ lời gọi từ client: orb.run();

- Để kiểm tra chương trình chạy, ta làm như sau:

69 Lập Trình Hệ Thống Với Java – Tìm hiểu lập trình phân tán trong Java

omniidl -bcxx SysProp.idl idlj -fall SysProp.idl 2. Biên dịch chương trình server:

javac SysPropServer.java

3. Biên dịch chương trình client C++. Trên Linux dùng lệnh:

Một phần của tài liệu Báo cáo môn học Lập Trình Hệ Thống với Java Đề tài số 7 Tìm hiểu Lập trình phân tán trong Java (Trang 68)

Tải bản đầy đủ (PDF)

(81 trang)