java – 如何在JAX-RS异常上使用自定义消息设置40X错误?

前端之家收集整理的这篇文章主要介绍了java – 如何在JAX-RS异常上使用自定义消息设置40X错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在JAX-RS上的Web服务工作.现在我正在寻找一种方法来捕获一些异常,以便向用户发送一条40X错误自定义消息.

我有一个Web服务和一个ExceptionMapper.

这是我的网络服务:

  1. @Path( value = "/test/")
  2. public interface ServiceTest {
  3.  
  4. @Path(value = "{rrf}")
  5. @GET
  6. @Produces(MediaType.TEXT_XML)
  7. public ObjectDTO getDealer(@PathParam("rrf") String rrf){
  8. ObjectDTO objectDTO = new ObjectDTO();
  9. if( verifyRRFSintax(rrf) ) {
  10. //Get the objet,this part works fine
  11. } else {
  12. throw new IllegalArgumentException("Custom message");
  13. }
  14. return dwsDTO;
  15. }
  16.  
  17. private boolean verifyRRFSintax(String rrf) {
  18. return rrf.matches("[0-9]{8}");
  19. }
  20. }

这是我的ExceptionMapper

  1. @Provider
  2. @Produces(MediaType.TEXT_XML)
  3. public class IllegalArgumentExceptionMapper
  4. implements ExceptionMapper<IllegalArgumentException> {
  5.  
  6. @Override
  7. public Response toResponse(IllegalArgumentException e) {
  8. return Response.status(Response.Status.BAD_REQUEST).build();
  9. }
  10. }

这就是它在application-context.xml文件中的注册方式

  1. <bean id="serviceTest" class="ServiceTest"/>
  2.  
  3. <jaxrs:server id="Server" address="/ws">
  4. <jaxrs:serviceBeans>
  5. <ref bean="serviceTest"/>
  6. </jaxrs:serviceBeans>
  7. <jaxrs:providers>
  8. <bean id="rffErrorException" class="IllegalArgumentExceptionMapper"/>
  9. </jaxrs:providers>
  10. </jaxrs:server>

当我调试时,IllegalArgumentExceptionMapper捕获异常我抛出,但我看不到在浏览器上显示的黄色网页上的消息.我总是有一个

Erreur d’analyse XML : aucun élément trouvé / XML Parsing Error: no
element found (in english)

我怎样才能在浏览器上显示这个自定义消息?
为什么,即使我改变了响应状态(NOT_FOUND,BAD_REQUEST,FORBIDDEN)的类型,这个黄页总是一样的?

PD:在控制台上,我有一个消息“out.handlemessage”,当Mapper捕获异常时打印.

谢谢.

解决方法

  1. throw new WebApplicationException(Response.status(Status.NOT_FOUND)// Or another Status
  2. .entity("Error Message").build());

猜你在找的Java相关文章