2013-06-27 17 views
3

我正在使用基於攔截器的以下代碼。當檢查返回true時,我想拋出403錯誤:如何在Apache CXF中拋出403錯誤 - Java

@Override 
    public void handleMessage(Message arg0) throws Fault { 


     HttpServletRequest request = context.getHttpServletRequest(); 
     if(check(request)){ 
     // currently not working 
       throw "Fault"; 
     } 

我想拋出403錯誤。我如何從這種情況下去做這件事?

我對「拋錯」如何工作有點困惑。

任何幫助表示讚賞

回答

7

CXF將默認狀態代碼500的故障,但你可以Fault.setStatusCode設置。例如

Fault fault = new Fault(new Exception("Exception message")); 
fault.setStatusCode(403); 
throw fault; 
+0

我得到「構造故障(字符串)是不確定的」 – Tai

+0

哎呀,我搞砸了故障構造。看起來需要採取例外。我會編輯答案。 – Patrick

+0

hmm:「方法setStatusCode(int)未定義類型Fault」...我使用java與apache dxf – Tai

0

你有沒有考慮拋出:

throw new javax.ws.rs.ForbiddenException(); 

它返回HTTP 403