GlassFishは、異なるマシンに配置されているオブジェクト間で、IIOP(Internet Inter-ORB Protocol)を介してリクエストの呼出しを行うORB(Object Request Broker)機能を提供します。
ORB
ORBは、リモートサーバー上のアプリケーションを呼び出すため、以下の処理を実行します。このため、アプリケーションは、ネットワーク通信に関する処理を実装する必要がありません。
呼出し側で指定した名前のオブジェクトをネットワーク上から検索
通信コネクションの管理
リクエストデータを通信可能なデータ型に変換して、オブジェクトへ送信
サーバーで運用するオブジェクトのメソッドを呼び出して結果をクライアントに返信
ORBの定義変更は、asadminコマンドで編集できます。
ポイント
リクエストデータを通信可能なデータ型に変換する処理をマーシャリングと呼びます。
RMI-IIOP
RMI-IIOPを使用するアプリケーションは、RMI(Remote Method Invocation)形式でアプリケーションを作成することで、IIOP通信してリモートサーバーで運用されたEnterprise JavaBeanを呼び出すことができます。JNDIを使用してリモートサーバーのネーミングサービスにアクセスする場合も、IIOP通信で行います。
同一Java VM上のアプリケーションを呼び出す場合には、ORBが自動的にIIOP通信を介さずにアプリケーションを呼び出し、不要なネットワーク通信が抑止されるため、性能が最適化されます。
IIOPリスナー
IIOPリスナーは、Enterprise JavaBeanのクライアントよりネットワーク接続を受信するリスナーソケットです。ドメインには、3つのリスナーが用意されています。各リスナーには、リスナーポート番号、ネットワークアドレスを指定してください。
IIOPリスナーの定義変更は、asadminコマンドで編集できます。
ファイアウォールの連携
ファイアウォールをまたがり安全にシステム構築を行う場合、HTTP(S)に準拠したファイアウォール/プロキシサーバーを経由してWebアプリケーションでリクエストを受信し、ファイアウォール内でIIOP通信するようにシステムを構築してください。
注意
ファイアウォールをまたがりIIOP通信でリモートサーバー上のアプリケーションを呼び出す場合、IIOPリスナーのリスナーポートへのアクセスが許可されるように、ファイアウォールの設定を行う必要があります。しかし、この設定は、セキュリティ上、リスクが高いため、お勧めしません。
スタブ
RMI-IIOPでリモートサーバーのアプリケーションを呼び出す場合、リモートインターフェイスを実装するスタブを経由します。スタブは、配備時に生成されます。スタブを経由することで、クライアントは、リモートサーバーで運用されているアプリケーションを、あたかも同一マシン上で運用するアプリケーションのように呼び出すことができます。
GlassFishでは、スタブは運用時にメモリ上で動的に生成されます。これを、動的スタブと呼びます。動的スタブを使用する場合、リモートインターフェイスが呼出し側のクラスパスに設定されている必要があります。
オブジェクト管理
アプリケーションのオブジェクトと名前の管理は、ネーミングサービスで行われます。ネーミングサービスには、JNDI APIを使用してアクセスします。詳細は、「2.14.1 ネーミングサービス」を参照してください。
例外情報
IIOP通信でエラーが発生した場合に出力される例外情報については、「12.76.50 IIOP通信時の例外情報」を参照してください。