2016-08-25 7 views
0

EDIT:jackson-jaxrs-base-2.8で解決された以前のバージョンのackson-jaxrs-baseの問題でした。 https://github.com/FasterXML/jackson-jaxrs-providers/issues/22Jersey 2.x ExceptionMapper親マッピング

私は例外マッパーを使用してこの問題に取り組んでいます。私は、com.fasterxml.jackson.core.JsonProcessingExceptionのすべての子をsinlge ExceptionMapperにマップしたいと思います。次のコードで正常に動作します

@Provider 
public class JsonProcessingExceptionMapper implements ExceptionMapper<JsonProcessingException> { 

    @Override 
    public Response toResponse(JsonProcessingExceptionexception) { 
     return Response.status(Response.Status.BAD_REQUEST) 
       .entity("json parsing error!")).build(); 
    } 
:ここ

は私のコードです

@Provider 
public class JsonMappingExceptionMapper implements ExceptionMapper<JsonMappingException> { 

    @Override 
    public Response toResponse(JsonMappingException exception) { 
     return Response.status(Response.Status.BAD_REQUEST) 
       .entity("parsing error!").build(); 
    } 
} 

EDIT:JsonProcessingExceptionは、私がここで間違ってやっている正確に何JsonMappingException の親ですか?

答えて

0

クラスcom.fasterxml.jackson.jaxrs.base.JsonMappingExceptionMapperがlibに存在し、ExceptionMapperを実装しています。

最初のケースでは、JsonMappingExceptionを処理するため、このマッパーはあなたのものより適していますが、あなたは共通のJsonProcessingExceptionを処理します。

マッパーは、このマッパーと同じレベルであるため、適用することができます。

+0

したがって、JsonProcessingExceptionのすべての子を単一のExceptionMapperにマップする方法はありませんか? – user3454970

+0

プロバイダを削除することが可能かどうかわかりません。あなたは回避策を講じなければならないかもしれません。しかしおそらくこれはhttp://stackoverflow.com/questions/17794372/removing-an-added-provider-in-jerseyが助けになるでしょう。 – kosbr

0

私自身の質問に答える:

私は次のように修正しました。 jackson jarsを2.8xに更新し、注釈の後に追加しました。

@Priority(4000) 
@Provider 
public class JsonMappingExceptionMapper implements ExceptionMapper<JsonMappingException> { 

    @Override 
    public Response toResponse(JsonMappingException exception) { 
     return Response.status(Response.Status.BAD_REQUEST) 
       .entity("parsing error!").build(); 
    } 
} 

これは予想どおり動作します。

関連する問題