2

他のいくつかの REST サービスを呼び出し、それらのリターンを組み合わせて新しいリターンを形成する Jersey 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 をスローする自分のサービスであったとき、私は他のサービスに集中していました。

サービス実装の周りに try catch (Exception e) を配置し、問題をすばやく見つけます。Jersey は、このエラーを返すときにスタック トレースを削除します。これは、リモート サービスからではなく、独自のコードである可能性があります。

そのように苦しんでいる他の人のために後世のためにここに置かれました。他にどこに注意すればよいかわかりませんでした。

于 2013-09-03T00:23:08.023 に答える