use*_*882 7 java rest error-handling soap cxf
我正在尝试处理来自我后端的错误.该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);
}
}
Run Code Online (Sandbox Code Playgroud)
的context.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>
Run Code Online (Sandbox Code Playgroud)
mjw*_*enk 14
如果您正在使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要通过添加以下内容在jaxrs服务中注册提供程序:
<jaxrs:providers>
<bean class="com.blah.blah.blah.blah.MyExceptionMapper"/>
</jaxrs:providers>
Run Code Online (Sandbox Code Playgroud)
在上下文中的服务器配置中.有了这个,你就可以完全访问异常,并且可以从中获得任何你想要的东西.
这是你的另一个难题.您已经在使用JAX-RS了,为什么不使用JAX-WS呢?
此主题和此博客文章涵盖了将异常映射到SOAP错误.短而甜蜜:
JAX-WS 2.0规范要求注释的异常
@WebFault必须有两个构造函数和一个方法[获取故障信息的getter]:Run Code Online (Sandbox Code Playgroud)WrapperException(String message, FaultBean faultInfo) WrapperException(String message, FaultBean faultInfo, Throwable cause) FaultBean getFaultInfo()WrapperException被异常的名称替换,FaultBean被实现故障bean的类名替换.故障bean是一个包含故障信息的Java bean,Web服务客户端使用它来了解故障原因.
这是你的映射.只需在上下文中指定上述签名的实现,@WebFault您的SOAP API应该愉快地映射这些签名.显然,链接包含更多细节.
| 归档时间: |
|
| 查看次数: |
23746 次 |
| 最近记录: |