SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG
DONATE


YUM REPOSITORY

 
 

MAN page from Fedora 17 matlab-7.4.0.336-3.i386.rpm

tnameserv

Section: User Commands (1)
Updated: 2004 年 6 月 22 日
Index 

名前

tnameserv - Java IDL ネームサーバの起動スクリプト 

形式

tnameserv-ORBInitialPort port_number 

機能説明

CORBACOS(Common Object Services) ネームサービス は、ファイルシステムがファイルに対してディレクトリ構造を提供しているのと同じように、オブジェクト参照に対してツリー構造のディレクトリを提供します。JavaIDLのネームサービスは、COSネームサービスの仕様を単純な形で実装したものです。

オブジェクト参照は名前空間に名前で格納され、オブジェクト参照と名前の組は、それぞれ「ネームバインディング」と呼ばれます。ネームバインディングは「ネーミングコンテキスト」に組み込むことができます。ネーミングコンテキストはそれ自体がネームバインディングであり、ファイルシステムのサブディレクトリと同じ編成機能を持ちます。すべてのバインディングは「初期ネーミングコンテキスト」に格納されます。名前空間において、初期ネーミングコンテキストは唯一の持続的バインディングです。それ以外のネーミングコンテキストは、JavaIDLのネームサーバプロセスが停止し、再起動されると失われます。

アプレットまたはアプリケーションからCOSネームサービスを使用するためには、そのORBはネームサービスが動作しているホストの名前とポートを知っているか、そのネームサーバの文字列化された初期ネーミングコンテキストにアクセスできなければなりません。ネームサービスは、JavaIDLのネームサーバでもその他のCOS準拠のネームサービスでもかまいません。  

使用法

 

Java IDL ネームサーバの起動

JavaIDLネームサーバは、ネームサービスを使用するアプリケーションまたはアプレットより前に起動しておかなければなりません。JavaIDL製品をインストールすると、JavaIDLネームサーバを起動するスクリプト (tnameserv) が作成されます。バックグラウンドで動作するように、ネームサーバを起動してください。

特に指定しない場合、JavaIDLネームサーバは、ORBresolve_initial_references()メソッドとlist_initial_references()メソッドの実装に使用するブートストラッププロトコルに対してポート 900 で待機します。ほかのポート (1050など) を指定するには、次のようにします。

example% tnameserv -ORBInitialPort 1050

ネームサーバのクライアントには、新しいポート番号を知らせる必要があります。このため、ORBオブジェクトの作成時にorg.omg.CORBA.ORBInitialPortプロパティに新しいポート番号を設定します。  

Java IDL ネームサーバの停止

JavaIDLネームサーバを停止するには、kill(1)などのオペレーティングシステムのコマンドを使います。なお、ネームサーバを終了させると、JavaIDLネームサービスに登録されている名前は失われます。 

サンプルクライアント: オブジェクトの追加

以下に示すサンプルプログラムは、名前を名前空間に追加する方法を示すものです。このサンプルプログラムは、このままの状態で完全に動作するネームサーバクライアントで、次のような単純なツリーを作成するものです。
       初期     ネーミングコンテキスト       /     \      /       \   plans      Personal                /\               /  \        calendar   schedule
この例で、plans はオブジェクト参照、Personal calendar schedule の 2 つのオブジェクト参照が含まれるネーミングコンテキストです。
import java.util.Properties;import org.omg.CORBA.*;import org.omg.CosNaming.*;public class NameClient{   public static void main(String args[])   {      try {
前述の「Java IDL ネームサーバの起動」では、ネームサーバはポート1050を使用して起動しました。次のコードで、このポート番号をクライアントプログラムに知らせます。
        Properties props = new Properties();        props.put("org.omg.CORBA.ORBInitialPort", "1050");        ORB orb = ORB.init(args, props);
次のコードでは、初期ネーミングコンテキストを取得し、それをctxに代入します。2 行目では、ctxをダミーのオブジェクト参照 objref にコピーします。このobjrefには、あとでさまざまな名前を割り当てて名前空間に追加します。
        NamingContext ctx = NamingContextHelper.narrow            (orb.resolve_initial_references("NameService"));        NamingContext objref = ctx;
次のコードでは、text 型の名前「plans」を作成し、それをダミーのオブジェクト参照にバインドします。その後、rebindを使用して初期ネーミングコンテキストの下に「plans」を追加しています。rebindメソッドを使用すれば、bindを使用した場合に発生する例外を発生させずに、このプログラムを何度も繰り返し実行できます。
        NameComponent nc1 = new NameComponent("plans", "text");        NameComponent[] name1 = {nc1};        ctx.rebind(name1, objref);        System.out.println("plans rebind sucessful!");
次のコードでは、directory 型の「Personal」というネーミングコンテキストを作成します。その結果得られるオブジェクト参照ctx2をこの名前にバインドし、初期ネーミングコンテキストに追加します。
        NameComponent nc2 = new NameComponent("Personal", "directory");        NameComponent[] name2 = {nc2};        NamingContext ctx2 = ctx.bind_new_context(name2);        System.out.println("new naming context added..");
残りのコードでは、ダミーのオブジェクト参照を「schedule」と「calendar」という名前でネーミングコンテキスト「Personal」(ctx2)にバインドします。
        NameComponent nc3 = new NameComponent("schedule", "text");        NameComponent[] name3 = {nc3};        ctx2.rebind(name3, objref);        System.out.println("schedule rebind sucessful!");        NameComponent nc4 = new NameComponent("calender", "text");        NameComponent[] name4 = {nc4};        ctx2.rebind(name4, objref);        System.out.println("calender rebind sucessful!");    } catch (Exception e) {        e.printStackTrace(System.err);    }  }}
 

サンプルクライアント: 名前空間のブラウズ

次のサンプルプログラムでは、名前空間をブラウズする方法を示します。
import java.util.Properties;import org.omg.CORBA.*;import org.omg.CosNaming.*;public class NameClientList{   public static void main(String args[])   {      try {
前述の「Java IDL ネームサーバの起動」で、ネームサーバはポート1050を使用して起動しました。次のコードで、このポート番号をクライアントプログラムに知らせます。
        Properties props = new Properties();        props.put("org.omg.CORBA.ORBInitialPort", "1050");        ORB orb = ORB.init(args, props);
次のコードでは、初期ネーミングコンテキストを取得しています。
        NamingContext nc = NamingContextHelper.narrow           (orb.resolve_initial_references("NameService"));
list メソッドは、ネーミングコンテキストに追加されているバインディングをリストします。この場合、最大 1000 個までのバインディングが初期ネーミングコンテキストからBindingListHolderに返されます。残りのバインディングは、BindingIteratorHolderに返されます。
        BindingListHolder bl = new BindingListHolder();        BindingIteratorHolder blIt= new BindingIteratorHolder();        nc.list(1000, bl, blIt);
次のコードでは、返されたBindingListHolderからバインディングの配列を取得します。バインディングがない場合は、プログラムは終了します。
        Binding bindings[] = bl.value;        if (bindings.length == 0) return;
残りのコードでは、バインディングに対してループ処理を行い、名前を出力します。
        for (int i=0; i < bindings.length; i++) {            // get the object reference for each binding            org.omg.CORBA.Object obj = nc.resolve                                 (bindings[i].binding_name);            String objStr = orb.object_to_string(obj);            int lastIx = bindings[i].binding_name.length-1;            // check to see if this is a naming context            if (bindings[i].binding_type == BindingType.ncontext) {              System.out.println                                 ("Context: " + bindings[i].binding_name[lastIx].id);            } else {                System.out.println                                   ("Object: " + bindings[i].binding_name[lastIx].id);            }        }       } catch (Exception e) {        e.printStackTrace(System.err);       }   }}
 

関連項目

kill(1)


 

Index

名前
形式
機能説明
使用法
Java IDL ネームサーバの起動
Java IDL ネームサーバの停止
サンプルクライアント: オブジェクトの追加
サンプルクライアント: 名前空間のブラウズ
関連項目

This document was created byman2html,using the manual pages.