我试图处理来自后端的错误。如果发生错误但内容是XmlMessage的实例,则调用handleMessage()
。我想将其更改为我自己的回复 - 只需设置响应代码并添加一些消息即可。使用CXF拦截器处理错误 - 更改响应消息
我还没有发现任何适当的文件,其能告诉我如何做到这一点?
这些axamples是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);
}
}
的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>
谢谢。我不接受你的回答,为了分享你们之间的声望 – user219882 2012-04-15 22:18:48
@Tomas虽然努力是高尚的(我很高兴我帮了忙!),不幸的是,[这不是赏金系统的工作原理]( http://meta.stackexchange.com/questions/2786/accept-multiple-answers-or-split-bounty-among-several-users)([details](http://meta.stackexchange.com/questions/16065) /如何 - 做最赏金系统工作/ 16067#16067))。我为你调和这件事感到不自在,因为我对结果有一定的兴趣,但是如果你觉得有两个答案是值得的,则可以选择授予额外的奖励。抱歉,添麻烦了;我没有写这个系统。 :) – MrGomez 2012-04-15 22:31:55
哦,那太糟糕了。我决定这样做:我给予mjwenk赏金,因为声望可以帮助他比你更多并接受你的答案,因为你有链接到REST和SOAP。我想这是唯一公平的方式(或者至少是一点点)。谢谢你提到它... – user219882 2012-04-16 00:06:34