2012-04-09 5 views
1

Mon service RESTEasy a une méthode utilisant des paramètres de cookie:JBoss RESTEasy Client et Servlet

public interface SimpleService 
{ 
    public String test(@CookieParam("param") String param); 
} 

Maintenant, je suis en train d'utiliser mon SimpleService avec framework client RESTEasy et il est l'usine proxy à partir de mon Servlet. Cependant, comment puis-je "transférer" les paramètres de cookie correctement? À l'heure actuelle, je dois parcourir manuellement la matrice de cookies de la requête et fournir manuellement la valeur du cookie à l'appel de fonction de test (..). La lecture de la documentation du framework client RESTEasy sur http://docs.jboss.org/resteasy/docs/2.3.0.GA/userguide/html/RESTEasy_Client_Framework.html lit:

@CookieParam fonctionne le miroir opposé à son homologue côté serveur et crée un en-tête de cookie à envoyer au serveur. Vous n'avez pas besoin d'utiliser @CookieParam si vous allouez votre propre objet javax.ws.rs.core.Cookie et le transmettez en tant que paramètre à une méthode de proxy client. Le framework client comprend que vous transmettez un cookie au serveur, donc aucune métadonnée supplémentaire n'est nécessaire. Donc, je suis curieux de savoir ce que cela signifie pour mon cas? Comment utiliser correctement les paramètres du cookie RESTEasy & dans mon servlet?

merci!

Répondre

1

Il a été un moment que vous avez demandé, et vous avez probablement résolu le problème maintenant, mais voici quelque chose pour référence future:

Si vous cherchez à accéder aux cookies envoyés par le serveur en utilisant le framework client, je pense que vous êtes coincé avec des en-têtes traversant (du ClientResponse comme vous le faites aujourd'hui?).

Cependant, si vous cherchez à comprendre comment les @CookieParam travaux, en utilisant l'interface actuelle pour le client, ce serait quelque chose comme ceci:

SimpleService service = ProxyFactory.create(SimpleService.class, "the://url:to/your/service"); 
service.test("this text becomes a cookie called 'param' in the request"); 

Ce cookie sera disponible en tant que paramètre d'entrée de chaîne à l'implémentation côté serveur.

@Get 
@Path("/test") 
public String test(@CookieParam("param") cookie) { 
    log(cookie); // would print: this text becomes a cookie called 'param' in the request 
    return "seems legit"; 
} 

Espérons que cela vous aide, vous les futurs lecteurs ou les deux!