泽西岛自定义异常消息

时间:2015-08-12 07:37:10

标签: java rest http jersey tomcat7

我编写了一个Jersey服务器应用程序和一个使用提供的REST服务的客户端应用程序。 但是我将异常消息从服务器传递到客户端存在问题。 目前我已经实现了它:

服务器WS方法:

@GET
@Path("/test")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public TestModel doTest(){
    throw new NotImplementedException("[doTest] is not implemented yet");
}

NotImplementedException:

public class NotImplementedException extends WebApplicationException{
        public NotImplementedException(){
             super(Response.status(Response.Status.NOT_IMPLEMENTED)
                     .entity("The operation you've called is not implemented yet").type(MediaType.APPLICATION_JSON).build());
        }

        public NotImplementedException(String message){
             super(Response.status(Response.Status.BAD_GATEWAY).entity(message).type(MediaType.APPLICATION_JSON).build());
        }
    }

客户端:

public static TestModel doTest() throws Exception{
        try {
            Client client = getClient();

            WebTarget webTarget = client.target("server..../");
            WebTarget getGuTarget = webTarget.path("test");

            Invocation.Builder ib = getGuTarget.request(MediaType.APPLICATION_JSON);


            TestModel response = ib.get(TestModel.class); //here exception is thorwn
            return response;
        } catch (Exception e) {
            throw e;
        }
    }

客户端上捕获的异常如下:

javax.ws.rs.ServerErrorException: HTTP 502 Bad Gateway
    at org.glassfish.jersey.client.JerseyInvocation.createExceptionForFamily(JerseyInvocation.java:1029)
    at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1009)
    at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:799)
    at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:91)

不幸的是我无法收到" [doTest]尚未实施"客户端上的消息。我怎么能收到这条消息?

当我测试网络服务时,我收到正文中的正确消息。不幸的是,我不知道如何通过汗布来访问它?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以将ExceptionMapper用于自定义例外:https://jersey.java.net/apidocs/2.11/jersey/javax/ws/rs/ext/ExceptionMapper.html

否则,泽西岛会​​尝试尽可能好地映射异常。