Java 返回400个错误请求的Jersey服务必须为';至';范围内的索引

Java 返回400个错误请求的Jersey服务必须为';至';范围内的索引,java,jersey,Java,Jersey,我有一个Jersey REST服务,它调用其他几个REST服务并将它们的返回组合成一个新的返回。我的单元测试通过了,但在集成中,我收到了一个400错误的请求,无法确定是谁返回了该请求。Jersey是否解析输入并返回400 @GET @Path("/existing/{name}") @Produces( MediaType.APPLICATION_JSON ) def namedFriction( @PathParam("name") String name, @Context HttpServ

我有一个Jersey REST服务,它调用其他几个REST服务并将它们的返回组合成一个新的返回。我的单元测试通过了,但在集成中,我收到了一个400错误的请求,无法确定是谁返回了该请求。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() )
 }

5个小时后,我找到了答案。我找错地方了。结果,运行时异常被Jersey响应处理程序转换为400个错误请求。当问题是我自己的服务从循环中抛出IllegalArgumentException时,我将注意力集中在其他服务上

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


为后人安置在这里,为任何其他如此受苦的人。我不知道还有什么地方可以注意到这一点。

这很奇怪,如果有错误,那么应该报告为500个内部服务器错误。在我不知道的情况下,另一个开发人员添加了一些无法记录的异常提供程序,并为各种异常返回了400个。