ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server RMIのプログラミング
11g リリース1(10.3.3)
B61626-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タイムアウトを使用する必要がある場合、以下のガイドラインを参照してください。