2012-09-26 105 views
1

我有一個基於JAX-WS的應用程序正在開發中。我使用wsgen從服務器生成WSDL,然後使用wsimport構建客戶端庫。我寫我自己的自定義異常與我的方法調用拋出。代碼結構如下。JAX-WS客戶端拋出SOAPFaultException而不是自定義異常

自定義異常類:

@WebFault(faultBean = "com.mysite.FaultBean") 
public class MyCustomException extends Exception { 
    private FaultBean faultInfo; 

    //Getters/Setters/Constructors... 
} 

自定義故障bean:

public class FaultBean { 
    private String message; 
    private List<String> messages; 

    //Getters/Setters/Constructors... 
} 

我再扔從我的方法MyCustomException在我的web服務端點。當我打電話給我的一個Web服務方法時,它拋出一個異常,客戶端得到SOAPFaultException而不是MyCustomException。爲什麼自定義異常未被使用?

回答

1

因此,經過一番調查後發現,由於SOAPFaultException並非來自我認爲的那些地方,所以引發了例外情況。他們實際上並沒有被拋出爲MyCustomException。因此,爲了解決這個問題,我利用了Spring AOP並創建了一個Around方面,以將所有調用包裝到Web服務實現層。

在這方面,我會捕獲拋出的任何異常並在重新拋出之前將其包裝在MyCustomException中。然後,我的客戶可以正確處理異常。