JBoss RESTEasy客户端和Servlet

时间:2012-04-09 06:02:38

标签: rest resteasy

我的RESTEasy服务确实有一个使用cookie参数的方法:

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

现在我正在尝试将我的SimpleService与RESTEasy客户端框架一起使用,它是我的Servlet中的代理工厂。但是,如何才能正确“转发”cookie参数?现在,我需要手动遍历请求的cookie数组,并手动将cookie的值提供给test(..)函数调用。阅读http://docs.jboss.org/resteasy/docs/2.3.0.GA/userguide/html/RESTEasy_Client_Framework.html上的RESTEasy客户端框架文档:

@CookieParam在其服务器端对应的镜像对面工作,并创建一个cookie头以发送到服务器。如果分配自己的javax.ws.rs.core.Cookie对象并将其作为参数传递给客户端代理方法,则不需要使用@CookieParam。客户端框架了解您正在将cookie传递给服务器,因此不需要额外的元数据。

所以我很好奇这对我的情况意味着什么?如何正确使用RESTEasy客户端框架&我的servlet中的cookie参数?

谢谢!

1 个答案:

答案 0 :(得分:1)

你提问已经有一段时间了,你现在可能已经解决了这个问题,但是这里有一些供将来参考的内容:

如果您希望使用客户端框架访问从服务器发送的cookie,我认为您会遇到遍历标题(从ClientResponse开始,就像今天一样吗?)。

但是,如果您希望了解@CookieParam如何工作,使用您当前的界面来创建客户端,它将是这样的:

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

该cookie将作为服务器端实现的String输入参数提供。

@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";
}

希望这对您,未来的读者或两者都有帮助!