我正在尝试处理来自后端的错误。这handleMessage()
如果发生错误但内容是 XmlMessage 的实例,则调用。我想将其更改为我自己的响应 - 只需设置响应代码并添加一些消息。
我还没有找到任何合适的文档可以告诉我如何做到这一点......
这些示例适用于 REST,但我也想在 SOAP 中管理这个东西。
拦截器
public class ErrorHandlerInterceptor extends AbstractPhaseInterceptor<Message> {
public ErrorHandlerInterceptor() {
super(Phase.POST_LOGICAL);
}
@Override
public void handleMessage(Message message) throws Fault {
Response response = Response
.status(Response.Status.BAD_REQUEST)
.entity("HOW TO GET A MESSAGE FROM AN EXCEPTION IN HERE???")
.build();
message.getExchange().put(Response.class, response);
}
}
上下文.xml
<bean id="errorHandlerInterceptor"
class="cz.cvut.fit.wst.server.interceptor.ErrorHandlerInterceptor" />
<jaxrs:server address="/rest/">
<jaxrs:serviceBeans>
<ref bean="restService" />
</jaxrs:serviceBeans>
<jaxrs:outFaultInterceptors>
<ref bean="errorHandlerInterceptor" />
</jaxrs:outFaultInterceptors>
</jaxrs:server>
如果您使用 JAX-RS,为什么不设置异常映射器,然后使用该映射器来处理响应。
一个简单的例子:
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class MyExceptionMapper implements
ExceptionMapper<MyException> {
@Override
public Response toResponse(MyException e) {
return Response.status(Status.NOT_FOUND).build();
}
}
然后,您需要通过添加以下内容在 jaxrs 服务中注册提供程序:
<jaxrs:providers>
<bean class="com.blah.blah.blah.blah.MyExceptionMapper"/>
</jaxrs:providers>
在上下文中的服务器配置中。这样您就可以完全访问异常,并可以从中获得您想要的任何内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)