我有一个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() )
}
Run Code Online (Sandbox Code Playgroud)
5个小时后,我找到了答案.我在找错了地方.事实证明,Jersey响应处理程序将运行时异常转换为400 Bad Request.当问题是我自己的服务从循环中抛出IllegalArgumentException时,我专注于其他服务.
在您的服务impl周围放置一个try catch(Exception e)并快速找到问题.返回此错误时,Jersey会剥离堆栈跟踪,它可能不是来自远程服务,可能是您自己的代码.
放在这里为其他任何受折磨的人做后代.我不知道还有什么要注意的.
| 归档时间: |
|
| 查看次数: |
9438 次 |
| 最近记录: |