sách gpt4 ai đã đi

Sự kiên trì của MBean

In lại Tác giả: IT Lao Gao Thời gian cập nhật: 2023-10-28 13:43:42 30 4
mua khóa gpt4 Nike

Tôi đang gặp vấn đề với tính bền bỉ của cấu hình MBeans. Cấu hình của tôi:

















 @ManagedResource(objectName = "pl.mobileexperts.catchme:name=adminMBean",
mô tả = "cài đặt quản trị",
persistPolicy = "Cập nhật",
persistLocation = "c:/", persistName = "adminSettings.jmx")
lớp công khai AdminSettingsMBean {

boolean riêng tư moderatorModeEnabled;

công khai AdminSettingsMBean() {
}

@ManagedAttribute(persistPolicy = "OnUpdate")
boolean công khai isModeratorModeEnabled() {
trả về moderatorModeEnabled;
}

@ManagedAttribute(persistPolicy = "OnUpdate")
công khai void setModeratorModeEnabled(boolean moderatorModeEnabled) {
this.moderatorModeEnabled = moderatorModeEnabled;
}
}

Mục tiêu của tôi là lưu trạng thái sau khi thuộc tính đã thay đổi (vào tệp hoặc siêu dữ liệu - không phải vào cơ sở dữ liệu). Sau khi JBoss khởi động lại, MBean của tôi được khởi tạo với các giá trị chuẩn. Có vẻ như PersistPolicy không hoạt động... Tôi đã thử triển khai PersistentMBean nhưng store() và load() không bao giờ được gọi. Tôi nhận ra rằng đây có thể là vấn đề triển khai JBoss JMX. Những người khác vẫn sử dụng phương pháp chú thích trong AOP và MBeans để lưu trữ chúng. Tất cả các bài đăng này đều được thực hiện từ năm 2008 đến năm 2010, vậy có thể có điều gì đó đã thay đổi không?

Cấu hình JBoss của tôi là mặc định (jboss-service.xml)

1 Câu trả lời

Tôi nghĩ vấn đề của bạn là do JBoss triển khai JMX. Theo JSR160, hãy chỉ định persistPolicy=OnUpdate nên dẫn đến việc thuộc tính luôn không đổi mỗi khi được cập nhật (từ JSR160 1.4):

persistPolicy - Xác định chính sách lưu trữ mặc định cho các thuộc tính trong MBean này không xác định persistPolicy của riêng chúng. Có một trong các giá trị sau:

[...]

  • OnUpdate - Thuộc tính được lưu trữ mỗi khi thuộc tính được cập nhật.

Điều này rất có thể là do Mặt Trời gây ra Kiên trìMBean Văn bản rất lạ này trong Javadoc của @Plínio Pantaleão Như đã lưu ý):

Không lưu trữ MBean nếu trường 'persistPolicy' là:

= "không bao giờ"

= "onUpdate"

= "onTimer" && bây giờ < 'lastPersistTime' + 'persistPeriod'

Ngoài việc báo cáo vấn đề này cho JBoss (và báo cáo các vấn đề Javadoc cho Sun), bạn cũng có thể sử dụng persistPolicy=Luôn luôn Chiến lược (cũng từ JSR160) để giải quyết vấn đề này:

  • Luôn luôn - Đây là từ đồng nghĩa của OnUpdate, được công nhận vì lý do tương thích. Khuyến nghị các ứng dụng sử dụng OnUpdate thay thế. Một triển khai của giao diện Descriptor, chẳng hạn như DescriptorSupport, có thể chọn thay thế giá trị "Luôn luôn" cho persistPolicy bằng giá trị "OnUpdate".

Liên quan đến Java - MBean persistence, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/9359483/

30 4 0
CNTT Lao Gao
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com