Tôi đang phát triển một ứng dụng REST bằng Glassfish 4.0.Bộ lọc GlassFish 4 + JAX-RS với @EJB
Trong lớp tài nguyên, tôi có thể tiêm để hoạt động bằng cách tạo lớp @Stateless và tiêm qua @EJB (lớp được tiêm là EJB không trạng thái).
Tuy nhiên, cách tiếp cận này không hoạt động trong bộ lọc JAX-RS. Tôi không thể tiêm thuốc để làm việc cả.
Xem mã bên dưới:
@Provider
public class UpdateFilter implements ContainerRequestFilter {
@EJB
private MyBeanInterface doStuffBean;
@Override
public void filter(ContainerRequestContext requestContext) {
...
}
}
doStuffBean luôn là null.
Mọi đề xuất?
@Inject không hoạt động. Một ngoại lệ được nêu ra: ** UnsatisfiedDependencyException: Không có đối tượng nào có sẵn để tiêm ... **. – bafitor
Thats bởi vì lớp học của bạn không phải là một bean được quản lý. Tôi không chắc chắn có thể biến Nhà cung cấp này thành ManagedBean, vì vậy bạn có thể phải tạo nhà sản xuất của riêng mình mà tra cứu EJB và sau đó bạn có thể tiêm bất cứ nơi nào (có rất nhiều bài viết cho thấy cách thực hiện điều này) hoặc bạn chỉ có thể thực hiện tra cứu trong lớp này. – ZeusSelerim