2012-06-20 5 views
1

Nous avons un serveur d'applications qui expose une multitude de services Web. Nous utilisons un tomcat sur le côté qui utilise ces services Web dans les applications JSF pour fournir une interface utilisateur. Supposons que nous ayons un bean qui a une méthode "getWebservice()" qui retourne la classe proxy utilisée par jaxws pour communiquer avec le webservice. Cela nous permet d'interagir avec le webservice avec un minimum d'effort: générons en utilisant wsimport, puis utilisez # {} myBean.webservice.myProperty etcMise en cache JAXWS dans JSF

Cependant, comme vous pouvez le voir, il faudrait un beaucoup d'interaction webservice lors de la réutilisation des méthodes exposées . Dans notre cas, la plupart des méthodes sont plutôt statiques, au moins pour la durée d'un bean @RequestScoped, donc l'interaction de la plupart des méthodes devrait être mise en cache une fois qu'elle est appelée (au moins pour une requête).

Actuellement, notre configuration est de créer des services d'emballage, dans le grain et chaque emballage fait exactement la même chose:

if (methodResponse == null) 
    methodResponse = getWebservice().getMethod(); 
return methodResponse; 

Vous pouvez voir que cela devient très ennuyeux très rapidement. Existe-t-il un moyen d'annoter une méthode jaxws pour la mise en cache? Ou puis-je générer ma propre classe de proxy en fonction de l'interface et la "chaîner" en quelque sorte au proxy utilisé par jaxws (et effectuer une mise en cache générique) ou puis-je créer ma propre annotation qui effectue la mise en cache?

Répondre

1

Vous pouvez créer une autre mise en cache Proxy autour de votre client de service web objet proxy, et de lui fournir un InvocationHandler, qui met en cache le résultat des invocations de méthode.

Consultez this blog post pour voir l'instruction complète étape par étape et télécharger l'exemple de code.

+0

Je n'ai pas encore eu le temps de créer réellement un proxy selon le tutoriel, mais j'ai scanné l'article et il semble être exactement ce dont j'ai besoin. Merci! – nablex