在Resteasy 3及以上版本中ClientResponse的替代方案是什么?

时间:2013-12-13 15:11:07

标签: java jboss jax-rs resteasy

我目前正在使用Resteasy 2.3.6.Final并希望升级到Resteasy 3.0.4.Final。但是,API doc表示该类现已弃用。所以我的问题是:

  1. 不推荐使用ClientResponse的原因是什么?这与在Resteasy 3 +中引入JAX-RS 2.0的事实有关吗?
  2. 现在推荐的Resteasy资源返回类型是什么?我读了user doc,第47.2节有一些例子。它建议使用javax.ws.rs.core.Response如果你想要取回所有东西,但这将删除泛型参数。如何保留通用参数?
  3. 感谢您的帮助。

    修改1

    以下是我所谈论的一个例子。

    我目前的代码是这样的:

       @GET
       @Path("matrixParam")
       @Produces("application/json")
       ClientResponse<Matrix> getMatrix(@MatrixParam("param")String param);
    

    ClientResponse接受通用参数。如果我改用Response,那么它将成为:

       @GET
       @Path("matrixParam")
       @Produces("application/json")
       Response getMatrix(@MatrixParam("param")String param);
    

    删除了通用参数。这会很不方便,因为调用者需要知道返回的对象是什么类型。

    修改2

    answer from Pascal和书籍Restful Java with JAX-RS 2.0都说不再需要泛型参数,因为接口方法可以直接返回所需的类型。谢谢Pascal回答。

1 个答案:

答案 0 :(得分:1)

您不再需要泛型参数,因为您可以在客户端界面方法中直接使用您自己的类型,如下所示:

    @GET
    @Path("matrixParam")
    @Produces("application/json")
    Matrix getMatrix(@MatrixParam("param")String param);

要查询远程服务,您可以使用resteasy客户端代理框架:

    Client client = ClientBuilder.newClient();
    WebTarget target = client.target("http://host/path");
    ResteasyWebTarget rsWebTarget = (ResteasyWebTarget)target;
    SimpleMatrixClient simple = rsWebTarget.proxy(SimpleMatrixClient.class);
    Matrix m = simple.getMatrix("myMatrixParamValue");