1

通話中の通話を中断することはできInitialContext.lookupますか?

理由: Glassfish サーバーにデプロイされた EJB jar があります。クライアントからリモート EJB ルックアップを実行しようとすると (Java Web Start 経由で開始)、サーバーに到達できない場合 (サーバーがダウンしているか、クライアントがインターネットに接続されていないなど)、ルックアップが永久にハングアップします。したがって、ルックアップを行うスレッドを中断する可能性が必要です。そうしないと、スレッドが永久に実行されます。

設定ORBTCPConnectTimeoutsしてみましたが、 に無視されているようInitialContextです。

編集

InitialContext ctx = new InitialContext();
ctx.lookup("EJBName"); // Here it hangs when server not reachable
4

1 に答える 1

1

JNDI サービスが利用できないときの私の経験によると、クライアントはすぐに例外を受け取ります。つまり、この種の状況に対処するために timeOut 値を設定する必要はありません。サーバーがオフラインのときに例外が発生していないことを確認してください。扱い方が間違っているのかもしれません。


JNDI プロパティを指定しない場合、クライアントはサーバーと同じマシンで実行されていると見なされます。

クライアントがリモートの場合、クライアントが JNDI サーバーに接続できるように、いくつかのプロパティーを指定する必要があります。示す必要がある最も直感的なプロパティは、IP と PORT です。そうでなければ、どうやってサーバーの場所を知ることができますか?

これらのプロパティはキーと値のペアのリストであり、主に 2 つの異なる方法で定義できます: jndi.properties ファイルを使用するか、他の署名を使用してクライアント コードで直接: InitialContext(Hashtable environment) 。

これらの JNDI プロパティはベンダーに依存します。このリンクは例を提供します。

また、クライアントのクラスパスにファイル gf-client.jar を追加する必要があります。

クライアントが正しく実装されている場合、タイムアウトを設定する必要がないことに気付くでしょう。

于 2013-07-19T23:01:01.370 に答える