オブジェクトがまだ「tnameserv」にバインドされているかどうかを確認する簡単な方法はありますか?オブジェクトをバインドした後、「tnameserv」プロセスがクラッシュしたり、強制終了されたりする可能性があります...そして、以前にバインドしたオブジェクトがまだバインドされているかどうかをアプリケーションで確認する必要があります。
1 に答える
Oracle Java ORBを使用していると仮定すると、一時的なtnameservではなく、OracleJavaORBが提供する永続的なネームサービスを使用してみませんか。アプリケーションには参照の永続的な登録が必要なようです。そのため、一時的なネーミングサービスから永続的な動作を取得しようとすると、行き止まりになる可能性があります。
ところで、Oracleが提供するものだけでなく、任意のベンダーのCOSネーミングサービスを使用できます(Javaで作成する必要もありません)。たとえば、無料のJacORB Name Serverは永続モードで実行でき、登録した参照がサービスの再起動またはクラッシュ後も存続できるようにします。
いずれにせよ、あなたの質問に対する答えは、クライアントまたはサーバーの観点から質問しているかどうかによって異なります。ネーミングサービスを使用するサーバーは、自身の既存の参照がすでに登録されていることを確認する必要はありません。代わりに、サーバーを呼び出しrebind()て登録を更新する必要があります。まだ何もない場合は、参照が追加されます。そこにある場合は、新しい値で上書きされます。
クライアントの観点からこれについて質問する場合は、ネーミングサービスが電話帳のようなものであることを覚えておく必要があります。クライアントが必要な登録をそこに見つけられない場合、必要なサービスを提供するために使用できる他の適切なオブジェクトを見つけることができない限り、クライアントは水中でほとんど死んでいます。本当に壊滅的なシナリオを補う方法を推測するよりも、その時点でクライアントを失敗させる方がおそらく良いでしょう。