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