我编写了一个自定义拦截器来进行一些参数验证.我希望能够返回错误代码并将带有JAXB注释的类序列化为响应主体.
如果我抛出一个WebApplicationException,它没有任何特殊的处理来序列化里面的Response对象(这是有意义的;我认为这是由另一个拦截器完成的).
我应该如何停止拦截器链但仍然有JAXB序列化响应实体?
好吧,至少在 CXF JAX-RS 拦截器流程中,如果您设置:
message.getExchange().put(Response.class, response);
Run Code Online (Sandbox Code Playgroud)
...那么实际的服务不会被调用,而其他阶段会被调用。还没有深入研究 CXF 代码来了解该逻辑在哪里发挥作用。
所以我建立了这样的回应:
Response response = Response
.status(Response.Status.FORBIDDEN)
.entity(new ErrorEntity("This is a JAXB object with an error string"))
.build();
Run Code Online (Sandbox Code Playgroud)
我还在 CXF JAX-RS 过滤器中运行一些自定义身份验证,我只想在身份验证正常时检查参数,因此我将参数拦截器类设置为在此阶段运行PRE_INVOKE。
| 归档时间: |
|
| 查看次数: |
4318 次 |
| 最近记录: |