私の GWT プロジェクトでは、例外チェーンがサービス呼び出しでスローされるように精巧な設計を作成しましたが、クライアントのメソッドでgetCause()
常に返されることがわかりました。null
onFailure()
GWT シリアライゼーション コードでデバッグした後、次のコードを見つけましたSerializabilityUtil
。
private static boolean fieldQualifiesForSerialization(Field field) {
if (Throwable.class == field.getDeclaringClass()) {
/**
* Only serialize Throwable's detailMessage field; all others are ignored.
*
* NOTE: Changing the set of fields that we serialize for Throwable will
* necessitate a change to our JRE emulation's version of Throwable.
*/
if ("detailMessage".equals(field.getName())) {
assert (isNotStaticTransientOrFinal(field));
return true;
} else {
return false;
}
} else {
return isNotStaticTransientOrFinal(field);
}
}
誰でもここで私を助けることができます.なぜGWT設計者はこれをコードに入れるのですか? に本当に問題がある(またはセキュリティに敏感な)ものはありThrowable.cause
ますか?
当然のことですが、GWT シリアライゼーションに例外クラスの例外を作成するように指示するにはどうすればよいでしょうか?