JAX-RSのWebサービスですでに動作しています。今私はカスタムメッセージで40Xエラーをユーザーに送信するためにいくつかの例外をキャッチする方法を探しています。JAX-RS例外のカスタムメッセージで40Xエラーを設定するにはどうすればよいですか?
私はWebサービスとExceptionMapperを持っています。
これは私のWebサービスです:これは私のExceptionMapper
@Provider
@Produces(MediaType.TEXT_XML)
public class IllegalArgumentExceptionMapper
implements ExceptionMapper<IllegalArgumentException> {
@Override
public Response toResponse(IllegalArgumentException e) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
}
が
@Path(value = "/test/")
public interface ServiceTest {
@Path(value = "{rrf}")
@GET
@Produces(MediaType.TEXT_XML)
public ObjectDTO getDealer(@PathParam("rrf") String rrf){
ObjectDTO objectDTO = new ObjectDTO();
if(verifyRRFSintax(rrf)) {
//Get the objet, this part works fine
} else {
throw new IllegalArgumentException("Custom message");
}
return dwsDTO;
}
private boolean verifyRRFSintax(String rrf) {
return rrf.matches("[0-9]{8}");
}
}
であり、これは、それがアプリケーション-context.xmlファイルに登録されます方法です
<bean id="serviceTest" class="ServiceTest"/>
<jaxrs:server id="Server" address="/ws">
<jaxrs:serviceBeans>
<ref bean="serviceTest"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean id="rffErrorException" class="IllegalArgumentExceptionMapper"/>
</jaxrs:providers>
</jaxrs:server>
とき私はデバッグ、IllegalArgumentExceptionMapperは私がスロー例外をキャッチが、私は黄色のメッセージが表示されませんブラウザに表示されるWebページ。私はいつも持っています
Erreur d'analyse XML : aucun élément trouvé/XML Parsing Error: no element found (in english)
ブラウザでこのカスタムメッセージを表示する方法は? なぜ、応答ステータス(NOT_FOUND、BAD_REQUEST、FORBIDDEN)の種類を変更しても、この黄色のページは常に同じですか?
PD:コンソール上で、Mapperが例外をキャッチしたときに出力されるメッセージ「out.handlemessage」があります。
ありがとうございました。
[OK]をみんな、おかげで、私は最終的に私は必要なものが見つかりました: パブリッククラスDwsWebServiceExceptionがWebApplicationException { 公共DwsWebServiceException(文字列メッセージ、int型の状態){ スーパー(レスポンスを拡張:私はのようなカスタム例外を追加します。 status(status).entity(message).type(MediaType.TEXT_XML).build()); } } とメッセージが表示されています。 – jomaora