2

我有一个 Jersey REST 服务,它调用其他几个 REST 服务并将它们的返回组合成一个新的返回。我的单元测试通过了,但在集成中我收到了 400 Bad Request 并且无法弄清楚是谁在返回它。Jersey 是否解析输入并返回 400?

@GET
@Path("/existing/{name}")
@Produces( MediaType.APPLICATION_JSON )
def namedFriction( @PathParam("name") String name, @Context HttpServletRequest request ) {
  Cookie ssoToken = HTTPUtils.getSSOCookie(request)
  def results = frictionBuilderService.checkCatalogForName(name, ssoToken)
  def requestUrl = HttpUtil.getBaseContextUrl( request )
  if ( results != null ) return frictionBuilderService.formatFriction(results, requestUrl)
  throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND).build() )
 }
4

1 回答 1

7

5个小时后,我找到了答案。我找错地方了。结果,运行时异常被 Jersey 响应处理程序变成了 400 Bad Request。当问题是我自己的服务从循环中抛出 IllegalArgumentException 时,我专注于其他服务。

在您的服务 impl 周围放置一个 try catch (Exception e) 并快速找到问题。Jersey 在返回此错误时会剥离堆栈跟踪,它可能不是来自远程服务,可能是您自己的代码。

为任何其他受此折磨的人的后代而放置在这里。我不知道还有什么地方要注意这一点。

于 2013-09-03T00:23:08.023 回答