2013-12-13 102 views
3

我目前正在使用Resteasy 2.3.6.Final并且想升级到Resteasy 3.0.4.Final。但是,API doc表示该类现在已被弃用。所以我的问题是:Resteasy 3及更高版本中ClientResponse的替代方案是什么?

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

感谢您的帮助。

编辑1

这里是我谈论的例子。

我目前像这样的代码:

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

ClientResponse发生在一个泛型参数。如果我使用响应代替,那么它将变成:

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

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

编辑2

answer from Pascal和书Restful Java with JAX-RS 2.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"); 
+0

如果响应有时是空的,该怎么办?例如204我没有得到回应实体......但我很难检查例如如果我直接返回实体的响应状态。 –

相关问题