Доступ к FacesContext из веб-службы
Я разрабатываю веб-сервис, который будет вызываться клиентами, написанными мной. В веб-сервисе мне нужно использовать объекты всего приложения, что облегчает загрузку приложения в системе. Я реализовал свои объекты приложения, как показано в этом вопросе.
Я могу использовать свой объект на странице JSF без проблем следующим образом.
MyObject mo = (MyObject) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("MyObjectsName");
Но когда дело доходит до использования его в запросе веб-службы, FacesContext.getCurrentInstance() возвращает ноль. Есть ли способ использовать FacesContext в веб-сервисе.
1 ответ
Это ноль, потому что веб-сервисы не проходят через сервлет Faces. И так и должно быть, потому что веб-сервисы не имеют ничего общего с JSF.
Если вы используете реализацию jax-ws, вы можете использовать:
@Resource
WebServiceContext context;
Это введет WebServiceContext
с помощью которого вы можете:
ServletContext servletContext = (ServletContext)
context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
И имея ServletContext
, вы можете получить доступ к объектам области приложения.