tôi tạo một chú thích tùy chỉnh như dưới đâyInterceptorBinding không hoạt động
@InterceptorBinding
@Retention(RUNTIME)
@Target(TYPE, METHOD)
public @interface Traceable {}
tôi đã viết đánh chặn như bên dưới
@Traceable
@Interceptor
public class EnterExitLogger {
@AroundInvoke
public Object aroundInvoke(InvocatiobContext c) {}
}
Các đánh chặn và chú thích là trong một module gọi chung utils.
tôi chú thích một lớp mục tiêu của tôi với @Traceable ở cấp lớp như dưới đây
@Traceable
public class CDIManagedBean {
}
Tôi tuyên bố mục đánh chặn trong file beans.xml tôi như dưới đây
<interceptors>
<class>my.package.EnterExitLogger</class>
</interceptors>
Lớp mục tiêu là trong một mô-đun riêng biệt. beans.xml nằm trong thư mục META-INF của mô-đun lớp đích.
Các phương thức của lớp đích được gọi từ lớp còn lại. Khi tôi gọi các phương thức, phương thức AroundInvoke của interceptor không được gọi.
Tôi đọc tài liệu và hiểu rằng trình chặn phải chứa một hàm tạo đối số công khai. Tôi đã thêm nó. Nhưng vẫn là kẻ đánh chặn không được gọi.
Tôi đã thêm @Tham gia vào chú thích tùy chỉnh sau khi đọc tài liệu. Nhưng vẫn là kẻ đánh chặn không được gọi.
Từ tài liệu, tôi nhận thấy bộ chặn đánh chặn giao diện Serializable. Mặc dù không đề cập đến tôi thực hiện Serializable cũng có. Vẫn không hoạt động.
Sau đó, tôi đã xóa chú thích tùy chỉnh khỏi tệp chặn, tệp beans.xml và lớp đích. Tôi cũng loại bỏ công khai không có đối số constructor từ interceptor và gỡ bỏ Serializable.
Sau đó, tôi đã chú thích lớp đích với @Interceptors(EnterExitLogger.class)
và gọi luồng. Người đánh chặn của tôi đã được gọi.
Bất kỳ ai cũng có thể cho tôi biết cách thực hiện với InterceptorBinding?
P.S.
Tôi đang triển khai tai trong máy chủ WS 8.5.
Rất tiếc, tôi phải sử dụng bean.xml và khai báo thẻ, ngay cả Java EE 7! Cảm ơn. –