Menu

Liferay 7.2/DXP: Sử dụng SystemCheckers để theo dõi trạng thái của hệ thống

Liferay 7.2 có nhiều tính năng hay so với các phiên bản trước đó. Bài viết này sẽ giới thiệu một trong số chúng, cụ thể đó là SystemCheckers. Trong các phiên bản cũ, đôi khi hệ thống đã được khởi động xong chúng ta không thấy bất kỳ lỗi gì vì nó không được ghi ra log. Tuy nhiên, chúng ta vẫn không sử dụng được một vài service hoặc module. Ví dụ, một vài service được khai báo (Declarative Service) không thể hoạt động do thiếu tham chiếu đến các service/module khác hoặc bị tham chiếu vòng.

Để giải quyết vấn đề này, Liferay giới thiếu tính năng SystemCheckers. Nó sẽ giúp chung ta xác định xem các thành phần trong hệ thống, cái nào hoạt động hoặc là không. SystemCheckers sẽ cung cấp các thông tin hữu ích để chúng ta xác định và xử lý các lỗi có thể xảy ra. Ví dụ lỗi khai báo ở file bnd, tên của component, phiên bản build... bị lỗi. SystemCheckers sẽ đưa ra các vấn đề chung chung cần xem xét. Nhưng nếu bạn muốn xác định một vài vấn đề cụ thể thị bạn cũng có thể thực hiện được bằng cài đặt lại giao diện SystemChecker và đăng ký nó vào hệ thống OSGi.

Bài viết này sẽ chỉ cho bạn làm thế nào để thêm logic cụ thể.

Bước 1: Cài đặt giao diện SystemCheckers

@Component(immediate = true, service = SystemChecker.class)
public class CustomSystemChecker implements SystemChecker {
}

Bước 2: Ghi đè các phương thức của SystemCheckers

@Override
public String check() {
// Return result of your custom logic
return "Hello World";
}

@Override
public String getName() {
// Name of your custom System Checker
return "Hello World Checker";
}

@Override
public String getOSGiCommand() {
// Name of your custom osgi command
return "osgi:helloworld";
}

@Override
public String toString() {
return getName();
}

Sử dụng đoạn code trên bạn có thể cài đặt các nội dung cần kiểm tra của riêng mình và nó sẽ được gọi đến khi bạn gõ lệnh "system:check" ở giao diện gogo shell.

Chú ý: Đoạn code trên sẽ được thực hiện cùng với SystemChecker mặc định của hệ thống. Nếu bạn muốn chỉ chạy riêng phần của bạn thì bạn cần phải tạo ra một câu lệnh OSGi mới. Đoạn code dưới đây sẽ chỉ cho bạn cách để tạo câu lệnh như vậy.

@Component(
immediate = true,
property = {"osgi.command.function=helloworld", "osgi.command.scope=osgi"},
service = CustomOSGiCommands.class
)
public class CustomOSGiCommands {
public void helloworld() {
System.out.println("Hello World");
}
}

Với đoạn code như trên, khi bạn gõ lệnh "osgi:helloworld" tại giao diện gogo shell. Phương thức helloworld sẽ được gọi và trả ra kết quả tương ứng.

Tổng kết

Tính năng này thực sự hũu ích. Chúng ta có thể kiểm tra được trạng thái của hệ thống, có thể đảm bảo hệ thống luôn hoạt động tốt nhất.

Bạn có thể đọc bài viết gốc tại đây.

Không có nhận xét nào:

Đăng nhận xét