V/ Server Object Activation: (Sự hoạt hóa đối tượng máy chủ ):

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 46)

- 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

V/ Server Object Activation: (Sự hoạt hóa đối tượng máy chủ ):

những đối tượng đó có nội dung giống hệt nhau. Tương tự như vậy, các mã băm chỉ được tính toán từ định danh đối tượng.

Tóm tắt: ta có thể sử dụng các đối tượng stub trong các bộ và các bảng băm, nhưng ta phải nhớ rằng kiểm tra tính bằng nhau và băm không tính đến bản kê khai nội dung của các đối tượng từ xa.

4/. Cloning Remote Objects (Nhân bản các đối tượng từ xa):

- Các stub không có phương thức clone, vì thế ta không thể nhân bản một đối tượng từ xa bằng cách gọi clone trên stub. Lý do là kỹ thuật có trở lại một chút. Đó là nếu clone được thực hiện gọi từ xa kêu máy chủ nhân bản các đối tượng thực hiện, thì phương thức clone sẽ cần được ném một

RemoteException. Tuy nhiên, phương thức clone trong lớp cha Object bảo đảm sẽ không bao giờ ném bất kỳ ngoại lệ khác với CloneNotSupportedException. Đó là sự hạn chế tương tự mà ta gặp phải trong phần trước: equals và hashCode không tìm kiếm tất cả giá trị đối tượng từ xa mà chỉ so sánh các tham chiếu stub. Tuy nhiên, nó thực hiện clone không hướng, để thực hiện một nhân bản khác của một stub nếu bạn muốn được có một tham chiếu khác đến đối tượng remote, bạn chỉ có thể sao chép các biến stub. Vì vậy, clone đơn giản là không được xác định cho các stub.

V/. Server Object Activation: (Sự hoạt hóa đối tượng máy chủ ): chủ ):

- Trong các chương trình mẫu trước, ta sử dụng một chương trình máy chủ để khởi tạo và ghi nhận các đối tượng để mà các máy con có thể thực hiện gọi từ xa trên chúng. Tuy nhiên, trong một số trường hợp, thật là lãng phí để khởi tạo rất nhiều đối tượng máy chủ và chờ đợi các kết nối giữa chúng, mà có hoặc không có các đối tượng máy con sử dụng chúng. Cơ chế activation cho phép bạn trì hoãn việc xây dựng đối tượng để cho một đối tượng máy chủ chỉ được xây dựng khi có ít nhất một máy con gọi một phương thức từ xa.

- Để tận dụng activation ,mã máy con sẽ hoàn toàn không thay đổi. Máy con chỉ cần yêu cầu một tham chiếu từ xa và thực hiện gọi nó.

- Tuy nhiên, chương trình máy chủ được thay thế bằng một chương trình

activation mà các cấu trúc activation descriptors (mô tả sự hoạt hóa) của các đối tượng mà sẽ được xây dựng tại một thời gian sau đó, và liên kết với người nhận từ

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

các lần gọi phương thức từ xa với dịch vụ tên. Khi một lần gọi được thực hiện lần đầu tiên, thông tin trong mô tả sự hoạt hóa được sử dụng để xây dựng đối tượng.

- Một đối tượng máy chủ được sử dụng theo cách này nên mở rộng lớp Activatable và tất nhiên, thực hiện một hoặc nhiều giao diện từ xa. Ví dụ: class ProductImpl extends Activatable implements Product { . . . }

- Bởi vì việc xây dựng đối tượng được hoãn cho đến một thời gian sau

đó,nên nó phải xảy ra trong một hình thức tiêu chuẩn hóa. Vì vậy, ta phải cung cấp một hàm tạo có hai tham số:

+Một ID hoạt hóa (trong đó bạn chỉ cần truyền vào cho hàm tạo lớp cha) +Một đối tượng duy nhất đang chứa tất cả thông tin xây dựng,được bọc trong lớp MarshalledObject.

- Nếu bạn cần nhiều tham số xây dựng, bạn phải gói chúng trong một đối tượng duy nhất. Bạn luôn có thể sử dụng một mảng Object[]hoặc một lớp ArrayList. Như ta sẽ sớm thấy, ta đặt một bản sao được tuần tự (hoặc sắp xếp theo thứ tự) của thông tin xây dựng bên trong mô tả sự hoạt hóa. Hàm tạo đối tượng máy chủ của ta nên sử dụng phương thức get của lớp MarshalledObject để không tuần tự hóa thông tin xây dựng.

- Trong trường hợp của lớp ProductImpl, thủ tục này khá đơn giản,chỉ một đoạn thông tin là cần thiết để xây dựng, cụ thể là, tên sản phẩm. Thông tin đó có thể được bao bọc trong lớp MarshalledObject và không được bao bọc trong hàm tạo:

public ProductImpl(ActivationID id, MarshalledObject data) {

super(id, 0);

name = (String) data.get();;

System.out.println("Constructed " + name); }

-Bằng cách truyền 0 như tham số thứ hai của hàm tạo lớp cha ,chúng ta chỉ ra rằng thư viện RMI nên chỉ định số cổng phù hợp đến cổng sự lắng

nghe(listener).

- Hàm tạo này in một tin nhắn để ta có thể thấy rằng các đối tượng sản phẩm được hoạt hóa theo yêu cầu.

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 46)

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

(81 trang)