我試圖處理來自後端的錯誤。如果發生錯誤但內容是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