Tôi đang xây dựng một ứng dụng Java EE bằng JBoss 7.1.Trình chặn Java EE và @ViewScoped bean
Để kiểm tra đầy đủ các hành động của người dùng, tôi đang lên kế hoạch sử dụng Trình chặn để ghi lại mọi yêu cầu về phương thức của hạt của tôi.
Để làm như vậy tôi có đấu thầu sau đây:
@Inherited
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Logged {
}
Sau đó, tôi xác định lớp đánh chặn của tôi:
@Logged
@Interceptor
public class UserActionInterceptor implements Serializable {
private static final long serialVersionUID = 1L;
private Logger log = LoggerFactory.getLogger(UserActionInterceptor.class);
public UserActionInterceptor() {
}
@AroundInvoke
public Object logMethodEntry(InvocationContext invocationContext) throws Exception {
log.debug(invocationContext.getMethod().getName() + " invoked.");
return invocationContext.proceed();
}
}
tốt Cho đến nay đây là làm việc. Nếu tôi ràng buộc một lớp bằng cách sử dụng Interceptor này, tôi sẽ nhận được một số đăng nhập. Tuy nhiên nó trở nên phức tạp hơn khi tôi muốn nhắm mục tiêu các lớp đậu của tôi.
Nếu tôi có loại đậu @RequestScoped và liên kết nó với trình chặn của tôi, nó hoạt động. Tuy nhiên, nếu tôi có một loại đậu @ViewScoped thì nó không.
Tôi nhìn lên định nghĩa của @ViewScoped và tôi thấy:
@Retention(value=RUNTIME)
@Target(value=TYPE)
@Inherited
public @interface ViewScoped
Tôi có cảm giác rằng vấn đề nằm ở thực tế là chú thích này không có các loại mục tiêu PHƯƠNG PHÁP và nó ngăn chặn kẻ đánh chặn của tôi chặn các cuộc gọi đến các phương thức lớp.
Có ai có cùng vấn đề trước đó không? Có ai biết nếu nó có thể mở rộng phạm vi của đậu để các phương pháp của nó có thể bị chặn mà không làm thay đổi bản chất của @ViewScoped?