我正在用JAX-WS使用Java優先方法開發Web服務。我正在努力弄清楚如何向Web服務客戶端提供詳細的錯誤信息。理想情況下,我想,當存在驗證錯誤,拋出下面的類的實例:如何使用JAX WS通過SOAP提供詳細的錯誤信息?
public class ValidationException extends Exception {
private Errors errors;
public ValidationException(Errors errors) {
this.errors = errors;
}
public Errors getErrors() {
this.errors;
}
}
的Errors
對象(類似於Spring's Errors interface)封裝:
- 這是錯誤的 領域
- 每個錯誤的性質(唯一約束違反,允許範圍超過等)
ValidationException
由執行驗證的服務端點的操作拋出,例如,
public class MyEndpoint {
public void doSomething(ValidateableInput input) throws ValidationException {
// implementation omitted
}
}
客戶訪問使用由wsimport生成的代碼的服務。但是,此代碼不會拋出我的ValidationException
類的實例,而是拋出由wsimport
生成的異常類的實例(該類也被命名爲ValidationException
,但位於不同的包中)。客戶端的ValidationException
不包含Errors
對象,因此有關錯誤原因的詳細信息將丟失。
在SOAP/JAX-WS的上下文中,服務拋出的ValidationException
實例必須翻譯爲a SOAP fault。我已閱讀this article關於JAX-WS中的故障demonstrates how to use a Fault Bean來封裝有關您的異常的更多詳細信息。但是,Fault Bean似乎僅限於:
一個Java類,它具有無參數構造函數,消息字符串字段以及它的getter和setter。這將是您的soap:fault detail元素的載體。
所以它只提供了一個字符串來封裝關於錯誤原因的信息。
總結:是它可以提供一個JAX-WS服務