Jaxb Jersey/JaxRs包装任何响应

Jaxb Jersey/JaxRs包装任何响应,jaxb,jax-ws,jax-rs,jersey-2.0,Jaxb,Jax Ws,Jax Rs,Jersey 2.0,我正在寻找一种方法来包装我的服务的任何响应 我有一个简单的服务,有很多不同的方法,就像这样 @Path(value = "/listSomething/{apiKey:.+}") public List<ObjectA> listSomething(@PathParam(value = "apiKey") String apiKey) 我试着用一些拦截器来实现这一点,但没有成功(除非我添加@xmlseeala注释,我真的不想要,因为我想要一些通用方法)。我的包装器类如下所示: @X

我正在寻找一种方法来包装我的服务的任何响应

我有一个简单的服务,有很多不同的方法,就像这样

@Path(value = "/listSomething/{apiKey:.+}")
public List<ObjectA> listSomething(@PathParam(value = "apiKey") String apiKey)
我试着用一些拦截器来实现这一点,但没有成功(除非我添加@xmlseeala注释,我真的不想要,因为我想要一些通用方法)。我的包装器类如下所示:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
//@XmlSeeAlso(ResponseA.class)
public class ResponseWrapper {

  boolean error;
  String message;
  @XmlAnyElement(lax = true)
  Object object;

  public boolean isError() {
      return error;
  }

  public void setError(boolean error) {
      this.error = error;
  }

  public String getMessage() {
      return message;
  }
}
我尝试了@XmlElement、@XmlAnyElement的不同组合,但没有成功。我在WriterInterceptor和ContainerResponseFilter中尝试了它

我怎样才能做到这一简单的技巧(如果我不必关心消费者是否需要XML或JSON,那就太酷了,但是如果我必须破解JSON,我可以接受)

我现在觉得有点失落。谢谢你的帮助

我在尝试的方法中经常遇到的错误是未知的

   {0} nor any of its super class is known to this context.
我的拦截器或多或少是这样做的

  responseContext.setGenericType(Wrapper.class);
  responseContext.setType(Wrapper.class);
  responseContext.setEntity(wrapperInstance);

在拦截器中,我能想到的最简单的方法是:

Object currentEntity = responseContext.getEntity();
ResponseWrapper wrapper = new ResponseWrapper(currentEntity);
responseContext.setEntity(wrapper);

谢谢,这正是我所做的,但是如上所述,它将抛出一个异常(除非我添加@xmlseealway注释)。我知道这适用于CXF,我不知道为什么它不那么容易与泽西。
Object currentEntity = responseContext.getEntity();
ResponseWrapper wrapper = new ResponseWrapper(currentEntity);
responseContext.setEntity(wrapper);