リモートオブジェクトを呼び出すには、少なくても1つのORBを初期化する必要があります。ORBとは、ネットワークをまたがってクライアントからサーバへのオペレーション(メソッド呼び出し)を取り計らってくれます。
org.omg.CORBAで提供されるORBクラスを利用します。
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props);
引数のargsは、String[]型の変数で、アプリケーションのmain()で渡されるものをそのままセットすることが一般的です。nullはうまくないことがあるので、nullではなく長さ0の配列を作って入れます。propsは、java.util.Properties型の変数で、ORBの振る舞いを指定することができます。propsには特に指定が無い場合はnullを入れても良いです。
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(applet, props);
よく使用すると思われる代表的なオプションを2,3挙げます。
書式 | 例 |
-ORBPort=ポート番号 | -ORBPort=5566 |
書式 | 例 |
-ORBInitRef サービス名=<参照> | -ORBInitRef NameService=corbaloc:iiop:1.2@host.domain:4567/NameService |
Java 2実行環境には、SunのCORBA標準実装が含まれています。そのため、サードパーティ製のCORBA実装を使用するときは、内蔵CORBAから切り替える必要があります。これには、Java実行環境のプロパティ設定を行います。
プロパティ名 | 意味 |
---|---|
org.omg.CORBA.ORBClass |
ORBクラス名を指定 |
org.omg.CORBA.ORBSingletonClass |
ORBシングルトンクラス名を指定 |
このプロパティを設定してJavaを(foo.bar.Hogeクラスを)実行するには、
>java -Dorg.omg.CORBA.ORBClass=org.openorb.CORBA.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.openorb.CORBA.ORBSingleton foo.bar.Hoge |
のようにコマンドラインで-Dオプションを使って指定します。
下記のようにプロパティを設定するファイルorb.propertiesを作成し、Java実行環境のlibディレクトリに置きます。
org.omg.CORBA.ORBClass=org.openorb.CORBA.ORB org.omg.CORBA.ORBSingletonClass=org.openorb.CORBA.ORBSingleton |
JDK1.3.1の場合は、<JDK1.3.1インストールディレクトリ>\jre\libになります。
例:C:\jdk1.3.1\jre\lib
JRE1.3.1の場合は、<JRE1.3.1インストールディレクトリ>\libになります。
例:C:\Program Files\JavaSoft\JRE\1.3.1\lib
分散オブジェクトでは、リモートにあるオブジェクトの参照を取得しなければ意味がありません。参照を取得するには、Naming Service、Trading Service、自力で取得、といったようにいくつかの方法がありますが、ここではもっとも一般的なNaming Serviceを使用します。