2009-08-24 22 views
0

私はWebサービスを作成しています。だから私は持っています:Java Webサービスとリモート例外のベストプラクティス

public interface MyService extends Remote 
{ 
    public void service1(); 
} 

public class MyServiceImpl implements MyService 
{ 
    public void service1() { /* do something that sometimes throws an exception */ } 
} 

私は約RemoteExceptionを読んでいました。私はservice1()のコードをすべてにあるtry..catchにラップする必要がありますか?それから私はservice2()service3()のようにしなければなりません。

これを実行するには、呼び出し元(私の場合はサーブレット)に任せてください。

サーバーで発生するすべてのものをリモート例外で正確にラップする必要がありますか?またはリモート呼び出しプロセス(リフレクション、シリアライゼーションなど)を処理する例外のみですか?

答えて

1

コードがRemoteException投げるべきではないが、それはエラーがリモートサービスにアクセスが発生した場合、いつWSフレームワークのために確保されなければなりません。

ほとんどのフレームワークはExceptionを捕捉し、SOAP-Faultのエラーメッセージで別の例外をスローすることでクライアントが通常処理するSOAP-Faultとしてラップします(クライアントはJavaではないかもしれません) 。

これは、発生した障害に固有の例外をスローし、適切な応答を送信するためのフレームワークを残すことです。

+0

うわー、私は何とかあなたの答えを今まで見逃していました。まるで私が間違ってやっているかのように聞こえます... ありがとうございました。 – daramasala

0

あなたが知っている限り、メソッドはインターフェイスでRemoteExceptionをスローすることだけを宣言する必要があります。

パブリックインターフェイスMyServiceでリモート{

公共ボイドService1の()がRemoteExceptionをスロー延び。

}

関連する問題