如何在Resteasy服务中指定自定义HTTP错误响应

时间:2012-12-14 14:30:19

标签: tomcat servlets jax-rs

在我的resteasy服务中,我想根据客户的要求返回媒体文件,如下所示:

从服务器端(tomcat 6):

@GET
@Path("/getXML/{skinId}/{key}")
@Produces("text/xml")
public Response getXMLResource(@PathParam("key") String key, @PathParam("skinId") String skinId) {
  // Reading a file from disk...
  return Response.ok(file, type).build();
}

从客户那边:

final URL uri = new URL("http://localhost:8080/service/getXML");
final InputStream stream = uri.openStream();

问题:

我想返回自定义HTTP错误(资源不存在;服务器正忙,请稍后再试)。

@GET
@Path("/getError")
@Produces("text/xml")
public Response getError() {
  return Response.serverError().status(333).build();
}

但是当我尝试访问错误方法时,我得到500(!)(无论如何)内部服务器错误。

你们可以帮助我吗? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

我已经应对了这一点。 问题在于使用

.serverError()

自动意味着500错误代码作为服务器内部。

我们可以将响应状态设置为返回权限状态:

@GET
@Path("/getError")
public Response getError() {
  return Response.status(412).build();
}