ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server RMI プログラマーズ ガイド
11g リリース 1 (10.3.1)
B55530-01
 

目次
目次

戻る
戻る
 
次へ
次へ
 

9 アプリケーション設計のベスト プラクティス

以下の節では、RMI および RMI over IIOP を使用してプログラミングを行う際の推奨設計パターンについて説明します。

java.rmi の使用

Oracle では、RMI ユーザはjava.rmi を使用することをお勧めします。http://java.sun.com/javase/6/docs/api/java/rmi/package-summary.html を参照してください。Weblogic API には weblogic.rmi API が含まれていますが、これは非推奨となっており、互換性 API としてのみ提供されています。互換性 API として提供されているその他の WebLogic API は以下のとおりです。

PortableRemoteObject の使用

コードの移植性を保持するために、ホーム インタフェースをキャストするときには常に PortableRemoteObject を使用してください。たとえば、

Propshome home = (PropsHome)
PortableRemoteObject.narrow(
ctx.lookup( "Props" ),
PropsHome.class ); 

WebLogic ワーク コンテキストの使用

ベスト プラクティスは、ワーク エリアを使用する方法です。

セキュリティ コンテキストにおける変更の処理方法

WLS RMI では、スタブにおいてセキュリティ コンテキストは引き継がれません。スタブを確立するスレッドは、そのスレッド コンテキスト内に適切なサブジェクトを持ちます。その後スタブが別のスレッドで使用されたり、現在のスレッド コンテキストが何らかの処理により変更された後にスタブが使用された場合、以降のスタブを使用した呼び出しは「SecurityException」によって失敗する可能性があります。スレッドのコンテキストを変更する可能性のある処理としては、新たなイニシャル コンテキストの確立や WLST のプログラム的な実行などが挙げられます。JMS、JTA、または MDB を複数ドメイン コンフィグレーションで使用している場合にスレッド コンテキストを変更すると、クロスドメイン セキュリティに関する問題が頻繁に発生します。

RMI スタブが別のスレッドで使用される予定である場合は、アプリケーションで JSR-237 ワーク マネージャを使用して、スレッド コンテキストが新しいスレッドに伝播されるよう、スタブが作成されるスレッドのコンテキスト内で新しいスレッドをスケジューリングできます。これが不可能である場合、または元のスレッドのコンテキストが何らかの形で変更された場合、アプリケーションは JAAS でスタブを呼び出すためのコンテキストを再確立します。以下のパブリック API を使用すると、セキュリティ コンテキストを再確立できます。

RMI タイムアウトの使用に関するガイドライン

非同期呼び出しの動作が適しているものの、まだ実装していないレガシー システムにとって、この機能は回避策となります。可能な場合は、以下のような適切な技術をレガシー システムに実装することをお勧めします。

レガシー システムのために RMI タイムアウトを使用する必要がある場合、以下のガイドラインを参照してください。