球衣 ExceptionMapper 中的 toResponse 没有被调用 [英] toResponse in jersey ExceptionMapper does not get invoked

查看:12
本文介绍了球衣 ExceptionMapper 中的 toResponse 没有被调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

So I'm building a web application, we are using JPA and Jersey to consume/produces JSON data.

I have a custom "EntityException" aswell as a custom "EntityExceptionMapper"

Here's the mapper:

  @Provider
public class EntityExceptionMapper implements ExceptionMapper<EntityException> {

    public EntityExceptionMapper() {
        System.out.println("Mapper created");
    }

    @Override
    public Response toResponse(EntityException e) {
        System.out.println("This doesnt print!");
        return Response.serverError().build();
    }
}

My Exception:

public class EntityException extends Exception implements Serializable{

  public EntityException(String message) {
      super(message);
      System.out.println("This prints...");
  }

}

And I'm calling it from a REST call:

@POST
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public String test() throws EntityException{
    throw new EntityException("This needs to be send as response!!");
    //return "test";
}

My problem is that, when the above exception is thrown, I get in the constructor (prints: "This prints...") Edit: I also get the: "Mapper created!"

But my response is empty, and I don't get to the sys out of my toResponse method. This is really similar to the example on the jersey website:

https://jersey.java.net/nonav/documentation/1.12/jax-rs.html#d4e435

What am I missing??

解决方案

I am using deployment agnostic application model so the following worked for me:

public class MyApplication extends Application {
    public Set<Class<?>> getClasses() {
        Set<Class<?>> s = new HashSet<Class<?>>();
        s.add(HelloWorldResource.class);

        /** you need to add ExceptionMapper class as well **/
        s.add(EntityExceptionMapper.class)
        return s;
    }
}

这篇关于球衣 ExceptionMapper 中的 toResponse 没有被调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆