2

RESTful な方法でサーバー (JVM2) と通信するクライアント (JVM1) があります。ペイロード メカニズムに JSON を使用しています。

サーバーが例外をスローすると、それを JSON 形式にシリアル化し、ネットワーク経由で送信できます。クライアント側では、応答を受け取り、コンテンツを JSON 形式で表示します。

問題は、スローされている特定のタイプの例外を特定できないことです。

JSON 形式のいくつかの例外のシリアル化されたバージョン (NullPointerException、IllegalStateException、さらにはチェック例外である可能性があります) が与えられた場合、クライアント側で同じ型のオブジェクトを構築するにはどうすればよいですか。

ラッパー クラスを追加して、必要に応じてクライアントとサーバー間で共有できます。

前もって感謝します。

4

1 に答える 1

3

一般に、クライアント側で任意の例外を逆シリアル化することはお勧めできません。たとえば、サーバーは、使用中のjdkcドライバーimplに固有のSQLExceptionのサブクラスをスローする可能性があります。クライアント側のクラスパスにjdbcドライバーがない可能性が高いため、例外を逆シリアル化しようとすると、ある種のクレイジーなクラス読み込み例外が発生します。最善の方法は、例外を「ServerException」のような共通クラスに変換し、関連する詳細をこのクラスの文字列メンバー(たとえば、元の例外名、メッセージ、スタックトレースなど)として使用することです。

于 2012-07-30T16:35:35.770 に答える