2010-04-21 5 views
5

Je développe un service Web qui sera appelé par les clients que j'écris. Dans le service Web, j'ai besoin d'utiliser des objets à l'échelle de l'application, ce qui facilite la charge de l'application sur le système. J'ai implémenté mes objets à l'échelle de l'application comme indiqué dans this question.Accès à FacesContext à partir du service Web

Je peux utiliser mon objet dans une page jsf sans problème comme suit.

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

Mais quand il vient de l'utiliser dans un service Web Demande FacesContext.getCurrentInstance() renvoie null. Est-il possible d'utiliser le FacesContext dans un service Web.

+1

Sur quelle API repose votre service Web? Est-ce qu'il fonctionne dans le même conteneur/contexte? – BalusC

+0

J'utilise jax-ws, mais je ne pensais pas au conteneur. – scriptmonster

Répondre

5

Il est nul, car les services Web ne proviennent pas du servlet Faces. Et c'est ainsi que cela devrait se passer, car les services Web n'ont rien à voir avec JSF.

Si vous utilisez un JAX-ws mise en œuvre, vous pouvez utiliser:

@Resource 
WebServiceContext context; 

Cela injectera la WebServiceContext, par lequel vous pouvez:

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

Et ayant la ServletContext, vous peut accéder à vos objets application-scope.

+0

Je vais essayer dès que possible. Merci. – scriptmonster

+0

si j'utilise JAX RS et je veux accéder au bean viewscoped, y at-il un moyen d'atteindre, Bozho? –

Questions connexes