JAX-WS を使用して Web サービスを作成しています (Java から WSDL へのアプローチを使用してこれを作成しています)。
必要に応じて例外を機能させるのに問題があります。
次の例外クラスを作成しました。
@WebFault
public class MyWebServiceException extends SOAPFaultException {
private static final long serialVersionUID = 8234753208722614057L;
protected MyWebServiceException(SOAPFault fault) {
super(fault);
}
protected MyWebServiceException(SOAPFault fault, Throwable throwable) {
this(fault);
super.setStackTrace(throwable.getStackTrace());
}
}
これにより、SOAP 応答に次の内容を含めることができます。
<faultcode>E0010</faultcode>
<faultstring>Invalid Report</faultstring>
<detail>
<ns2:exception class="com.example.web.common.exceptions.MyWebServiceException" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false" xmlns:ns2="http://jax-ws.dev.java.net/">
<message>Invalid Report</message>
<ns2:stackTrace>
<ns2:frame class="com.example.web.common.exceptions.ExceptionHandler" file="ExceptionHandler.java" line="34" method="getWebException"/>
ただし、私の例外はSOAPFaultException
which extendsRuntimeException
であるため、WSDL に追加されていないため、サービスのユーザーがクライアント スタブを生成するときに、例外は含まれません。
この例外を作成して意図した出力(つまり、フォルトコードとフォルト文字列を含む)を提供する方法を知っている人はいますか?WSDLにも表示されます(チェックされた例外である必要があると思います)
私はすでに持っているものを思いつくために非常に高低を検索しました!