2010-04-21 11 views
5

Estoy desarrollando un servicio web que será llamado por los clientes y escrito por mí. En el servicio web, necesito utilizar objetos que abarquen toda la aplicación, lo que facilita la carga de la aplicación en el sistema. Implementé mis objetos para toda la aplicación como se muestra en this question.Accediendo a FacesContext desde el servicio web

Puedo usar mi objeto en una página jsf sin ningún problema de la siguiente manera.

MyObject mo = (MyObject) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("MyObjectsName"); 

Pero cuando se trata de usarlo en una solicitud de servicio Web FacesContext.getCurrentInstance() devuelve un valor nulo. ¿Hay alguna forma de usar FacesContext en un servicio web?

+1

¿En qué API está basado su servicio web? ¿Se ejecuta en el mismo contenedor/contexto? – BalusC

+0

Estoy usando jax-ws, pero no pensé en el contenedor. – scriptmonster

Respuesta

5

Es nulo, porque los servicios web no provienen del Servlet de Faces. Y esta es la forma en que debería ser, porque los servicios web no tienen nada que ver con JSF.

En caso de que usted está utilizando una aplicación JAX-WS, puede utilizar:

@Resource 
WebServiceContext context; 

Esto inyectará el WebServiceContext, mediante el cual se puede:

ServletContext servletContext = (ServletContext) 
    context.getMessageContext().get(MessageContext.SERVLET_CONTEXT); 

Y tener la ServletContext, se puede acceder a sus objetos de ámbito de aplicación.

+0

Lo intentaré lo antes posible. Gracias. – scriptmonster

+0

si uso JAX RS y quiero acceder al bean viewscoped, ¿hay alguna manera de lograrlo, Bozho? –

Cuestiones relacionadas