2012-06-18 261 views
3

我有一個代碼,它是圍繞Web服務的Java包裝,在例外它拋出一個AxisFault異常(如下面給出的)無法捕捉AxisFault異常

org.apache.axis2.AxisFault: Policy enforcement failed to authenticate the request. 
    at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:446) 
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371) 
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417) 
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) 
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 
    at com.tibco.n2.de.services.EntityResolverServiceStub.lookupUser(EntityResolverServiceStub.java:261) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 

,代碼看起來像下面給出,

try { 
       lookupUserResponse = myIntializedObject.lookupUser("someuser", null, null, true); 
      } catch (InvalidServiceRequestFault e) { 
       // TODO Auto-generated catch block 
       //e.printStackTrace(); 
      } catch (InternalServiceFault e) { 
       // TODO Auto-generated catch block 
       //e.printStackTrace(); 
      } catch (SecurityFault e) { 
       // TODO Auto-generated catch block 
       //e.printStackTrace(); 
      } 
      finally{ 
       if(lookupUserResponse==null) 
        return false; 
      } 

我也試圖與例外五隻單塊替換所有catch塊,但它仍然不是捕捉異常

回答

1

我能夠趕上AxisFault錯誤機智小時以下:

try { 
    ... 
} catch (RemoteException ex) { 
    if(ex instanceof AxisFault){ 
     logger.error("Axis Fault error: " + ((AxisFault)ex).getFaultString()); 
    } 
} 

AxisFaultjava.rmi.RemoteException一個子類。您可以通過查看API docs來了解這一點。類層次結構顯示在頁面的左上角。

至於爲什麼當您在catch聲明中使用java.lang.Exception時沒有發現此問題,也許您可​​以發佈相關代碼?