1

javax.ws.rs.ext.ExceptionMapper を使用して UnsupportedMediaTypeException をマップできないことが明確に文書化されている場所はありますか (これは簡単な例外であり、カスタム アプリケーションの例外ではないため)。

それをクライアントに証明したい。または、私がやりたいことは、この例外を、クライアントでフェッチしてエラーを表示できる Response にマップすることです。現在、この例外がスローされると、アプリケーションが突然終了するため、クライアントに情報が提供されません。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

1

この例外をマップできます。なぜだめですか?エラーが出ますか?

このコードは仕事をするはずです

@Provider
public class EJBExceptionMapper implements ExceptionMapper<org.jboss.resteasy.spi.UnsupportedMediaTypeException>{

  Response toResponse(org.jboss.resteasy.spi.UnsupportedMediaTypeException exception) {
    return Response.status(415).build();
  }

}

Spring 構成ファイルでそのプロバイダーを宣言することを忘れないでください。

クライアントにさらに情報を提供したい場合は、クラスを作成します

@XmlRootElement
public class Error{
   private String message;
   //getter and setter for message field
}

そして、あなたはすることができます

@Provider
public class EJBExceptionMapper implements ExceptionMapper<org.jboss.resteasy.spi.UnsupportedMediaTypeException>{

  Response toResponse(org.jboss.resteasy.spi.UnsupportedMediaTypeException exception) {
    Error error = new Error();
    error.setMessage("Whatever message you want to send to user");
    return Response.entity(error).status(415).build();
  }

}

Error エンティティを使用したくない場合は、Response.entity()呼び出す文字列を渡すだけです。

アプリケーションでスローされたものをすべてキャッチしたい場合は、一般的な例外マッパーを作成します。

@Provider
public class ThrowableMapper implements ExceptionMapper<Throwable> {

    public Response toResponse(Throwable t) {

        ErrorDTO errorDTO = new ErrorDTO(code);
        return Response.status(500).build();
    }
}
于 2012-04-26T12:12:44.373 に答える