Java ApacheCXF:如何从拦截器返回失败响应

Java ApacheCXF:如何从拦截器返回失败响应,java,cxf,Java,Cxf,我已经编写了一个自定义拦截器,它执行一些参数验证。我希望能够返回一个错误代码,并将一个JAXB注释类序列化为响应体 如果我抛出一个WebApplicationException,它没有任何特殊的处理来序列化内部的响应对象(这是有意义的;我假设这是由另一个拦截器完成的) 我应该如何停止拦截器链,但仍然让JAXB序列化响应实体?好吧,至少在CXF JAX-RS拦截器流中,如果您设置: message.getExchange().put(Response.class, response); …则不会

我已经编写了一个自定义拦截器,它执行一些参数验证。我希望能够返回一个错误代码,并将一个JAXB注释类序列化为响应体

如果我抛出一个WebApplicationException,它没有任何特殊的处理来序列化内部的响应对象(这是有意义的;我假设这是由另一个拦截器完成的)


我应该如何停止拦截器链,但仍然让JAXB序列化响应实体?

好吧,至少在CXF JAX-RS拦截器流中,如果您设置:

message.getExchange().put(Response.class, response);
…则不会调用实际服务,而会调用其他阶段。我还没有深入研究CXF代码,以了解该逻辑的作用

所以我做出了如下回应:

Response response = Response
    .status(Response.Status.FORBIDDEN)
    .entity(new ErrorEntity("This is a JAXB object with an error string"))
    .build();

我还有一些在CXF JAX-RS过滤器中运行的自定义身份验证,我只想在身份验证正常时检查参数,因此我将我的参数侦听器类设置为在
调用前
阶段运行。

但是如果我们使用SOAP协议,这种方式不起作用。有人能为SOAP案例提供更新吗?