我有SEI類,它引發了一個在WSDL文件中聲明的異常。在處理期間,當引發此異常時,SOAP Fault將成功發送到客戶端。這裏沒有問題。 但是,當我們在處理過程中遇到服務器中的任何運行時異常時,我們會創建一個自定義故障並從SEI類拋出相同的錯誤。 由於此自定義錯誤未在SEI中聲明,因此我們添加了錯誤類來擴展RuntimeException。但是,當從應用程序代碼拋出此自定義錯誤時,Websphere應用程序服務器不會將SOAP錯誤返回給客戶端。相反,它會引發異常,並將Http錯誤代碼500發送給客戶端。 有沒有辦法將自定義錯誤消息發送到客戶端,而無需在WSDL中聲明相同的消息。如何從服務端點接口拋出自定義錯誤(錯誤未在wsdl中聲明)
我的WebMethod:
public CustomerDetails enquireCustomer(Customer customer)
throws CustomerFault
{
try
{
// SOME LOGIC HERE
}
catch (Exception exception)
{
if (exception instanceof CustomerFault)
throw ((CustomerFault) exception);
if (localException instanceof CustomerFault)
{
FaultDetails faultDetails = new FaultDetails();
faultDetails.setErrorId(1);
faultDetails.setErrorDescription(errorDescription);
throw new CustomerFault("Failed in Processing and other details here... ", faultDetails);
}
}
}
我的錯類
import javax.xml.ws.WebFault;
@WebFault(name="CustomerFault", targetNamespace="http://www.mycompany.com")
public class CustomerFault extends RuntimeException
{
private static final long serialVersionUID = 1L;
private FaultDetails faultDetails;
public ServiceExecutionFault(String message, FaultDetails faultDetails) {
super(message);
this.faultDetails = faultDetails;
}
public ServiceExecutionFault(String message)
{
super(message);
}
public ServiceExecutionFault(String message, FaultDetails faultDetails,
Throwable cause) {
super(message, cause);
this.faultDetails = faultDetails;
}
public FaultDetails getFaultInfo() {
return faultDetails;
}
}
這個問題似乎獨自在那裏在WebSphere。在weblogic中嘗試時,同樣的工作正常,沒有任何問題。有沒有我在這裏失蹤的標準。