У меня есть веб-приложение с JAX-RS, CDI и EJB. В каждом ресурсе я вводя сценарий Sessioneless SessionBean, и мой вопрос заключается в том, можно ли вводить одни и те же экземпляры в провайдер JAX-RS и Stateless SesionBean. Я пытаюсь передать некоторые данные, которые поступают в каждом запросе в Stateeless SesionBean из ContainerRequestFilter. Доступ ко всем компонентам EJB осуществляется только с помощью ресурсов jax rs.Как распространять один и тот же экземпляр с помощью CDI
Пример:
public class Bean {
private String attr;
// getter and setter
}
@Stateless
public class BeanService {
@Inject
Bean bean;
public void doStuff() {
bean.getAttr();
// do something with bean.attr
}
}
@Path("/bean")
public class BeanResource {
@Inject
BeanService service;
@GET
public void doStuff() {
service.doStuff():
}
}
@Provider
public class BeanRequestFilter implements ContainerRequestFilter {
@Inject
Bean bean;
@Override
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
String data = null; // <- get data from request
bean.setAttr(data);
}
}
Update
Изменение Bean для Pojo, мое единственное намерение использовать класс, провести какое-то состояние, которые приходят в каждом запросе и может быть Передано в каждом вызове, начиная с PojoResource до PojoService. Я хочу сделать это таким образом, потому что все службы возвращают эти данные, и я не хочу передавать это как параметр для каждого метода.
Спасибо , ваше предложение изменить область действия класса Bean на функции RequestScoped. – ffcc