tnameserv.1 revision 0
t
Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation.

This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).

You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.

tnameserv 1 "2006 ǯ 9 �� 4 ��" "Java SE 6" "�桼�������ޥ��"
"̾��"
Java IDL: ����͡��ॵ���ӥ� - \f2tnameserv

���Υɥ�����ȤǤϡ�Java IDL ����͡��ॵ���ӥ� \f2tnameserv �λ�����ˡ�ˤĤ����������ޤ���Java IDL �ˤ� ORBD (Object Request Broker Daemon) ��ޤޤ�Ƥ��ޤ���ORBD �ϡ��֡��ȥ��ȥ�åץ����ӥ�������͡��ॵ���ӥ���\f3��³�͡��ॵ���ӥ�������ӥ����С��ޥ͡������ޤ�ǡ����ץ?���Ǥ���Java IDL �Τ��٤ƤΥ��塼�ȥꥢ��Ǥ� ORBD �����Ѥ���Ƥ��ޤ���������͡��ॵ���ӥ�����Ѥ������ \f2orbd �Ϥɤ�⡢\f2tnameserv ���֤������뤳�Ȥ��Ǥ��ޤ���\f2orbd �ġ���Υɥ�����ȤˤĤ��Ƥϡ����Υޥ˥奢��ڡ������� \f2Java IDL Naming Service Included with ORBD

(http://java.sun.com/javase/6/docs/technotes/guides/idl/jidlNaming.html) �Υȥԥå��򻲾Ȥ��Ƥ���������

�����Ǥϡ����ι��ܤˤĤ����������ޤ���

2 o Java IDL ����͡��ॵ���ӥ�

2 o Java IDL ����͡��ॵ���ӥ��ε�ư

2 o Java IDL ����͡��ॵ���ӥ������

2 o ����ץ륯�饤�����: ̾�����֤ؤΥ��֥������Ȥ��ɲ�

2 o ����ץ륯�饤�����: ̾�����֤Υ֥饦��

"Java IDL ����͡��ॵ���ӥ�"
"Java IDL name server starter script" "" "Java IDL name server starter script \(em \fLtnameserv" "tnameserv" "" "\fLtnameserv \(em Java IDL name server starter script" CORBA �� COS (Common Object Services) �͡��ॵ���ӥ��ϡ��ե����륷���ƥब�ե�������Ф��ƥǥ��쥯�ȥ� ��¤���󶡤��Ƥ���Τ�Ʊ���褦�ˡ����֥������Ȼ��Ȥ��Ф��ƥĥ꡼��¤�Υǥ��쥯�ȥ���󶡤� �ޤ��� Java IDL �ΰ���͡��ॵ���ӥ���\f2tnameserv �ϡ� COS �͡��ॵ���ӥ��λ��ͤ�ñ��ʷ��Ǽ���������ΤǤ���

���֥������Ȼ��Ȥ�̾�����֤�̾���dz�Ǽ���졢���֥������Ȼ��Ȥ�̾�����Ȥϡ� ���줾��֥͡���Х���ǥ��󥰡פȸƤФ�ޤ����͡���Х���ǥ��󥰤ϡ֥͡��� �󥰥���ƥ����ȡפ��Ȥ߹��ळ�Ȥ��Ǥ��ޤ����͡��ߥ󥰥���ƥ����ȤϤ��켫�� ���͡���Х���ǥ��󥰤Ǥ��ꡢ�ե����륷���ƥ�Υ��֥ǥ��쥯�ȥ��Ʊ�������� ǽ�����ޤ������٤ƤΥХ���ǥ��󥰤ϡֽ��͡��ߥ󥰥���ƥ����ȡפ˳�Ǽ�� ��ޤ���̾�����֤ˤ����ơ����͡��ߥ󥰥���ƥ����Ȥ�ͣ��λ�³Ū�Х��� �ǥ��󥰤Ǥ�������ʳ��Υ͡��ߥ󥰥���ƥ����Ȥϡ�Java IDL �Υ͡��ॵ���С��ץ?������ߤ����Ƶ�ư�����ȼ����ޤ���

���ץ�åȤޤ��ϥ��ץꥱ������󤫤� COS �͡��ॵ���ӥ�����Ѥ��뤿��ˤϡ����� ORB �ϥ͡��ॵ���ӥ���ư��Ƥ���ۥ��ȤΥݡ��Ȥ��ΤäƤ��뤫�����Υ͡��ॵ���ӥ��� ʸ���󲽤��줿���͡��ߥ󥰥���ƥ����Ȥ˥��������Ǥ��ʤ���Фʤ�ޤ��� �͡��ॵ���ӥ��ϡ�Java IDL �Υ͡��ॵ���ӥ��Ǥ⤽��¾�� COS ���Υ͡��ॵ���ӥ��Ǥ⤫�ޤ��ޤ���

"Java IDL ����͡��ॵ���ӥ��ε�ư"

"tnameserv" "Starting the Java IDL Name Server" "\fLtnameserv \(em Java IDL name server starter script" Java IDL �͡��ॵ���ӥ��ϡ��͡��ॵ���ӥ�����Ѥ��륢�ץꥱ�������ޤ��ϥ��ץ�åȤ������ ��ư���Ƥ����ʤ���Фʤ�ޤ��� Java IDL ���ʤ򥤥󥹥ȡ��뤹��ȡ�Java IDL �͡��ॵ���ӥ���ư���뤿��Υ�����ץ� (Solaris: \f2tnameserv) �ޤ��ϼ¹Բ�ǽ�ե����� (Windows NT: \f2tnameserv.exe) ����������ޤ��� �Хå����饦��ɤ� ư���褦�ˡ��͡��ॵ���ӥ���ư���Ƥ���������

�ä˻��ꤷ�ʤ���硢Java IDL �͡��ॵ���ӥ��ϡ� ORB �� resolve_initial_references(\|) �᥽�åɤ� list_initial_references(\|) �᥽�åɤμ����˻��Ѥ���֡��ȥ��ȥ�åץץ�ȥ�����Ф��ƥݡ��� 900 ���Ե����ޤ��� ���Τ褦�ˤ��ޤ���

\f3
.fl
 tnameserv -ORBInitialPort \f4nameserverport\f3&
.fl

�͡��ॵ���С��Υݡ��Ȥ���ꤷ�ʤ��ä���硢�ǥե���Ȥǥݡ��� 900 �����Ѥ���ޤ���Solaris ���եȥ�������¹Ԥ����硢1024 ���⾮�����ݡ��Ȥǥץ?����ư����ˤ� root �ˤʤ�ɬ�פ�����ޤ������Τ��ᡢ1024 ����������礭���ݡ����ֹ����Ѥ��뤳�Ȥ򤪴��ᤷ�ޤ���1050 �ʤɤΰۤʤ�ݡ��Ȥ���ꤷ�����ĥ͡��ॵ���ӥ���Хå����饦��ɤǼ¹Ԥ���ˤϡ�UNIX ���ޥ�ɥ����뤫�鼡�Τ褦�����Ϥ��ޤ���

\f3
.fl
 tnameserv -ORBInitialPort 1050&
.fl

Windows �ξ��ϡ�MS-DOS �����ƥ�ץ��ץȤ��鼡�Τ褦�����Ϥ��ޤ���

\f3
.fl
 start tnameserv -ORBInitialPort 1050
.fl

�͡��ॵ���С��Υ��饤����Ȥˤϡ��������ݡ����ֹ���Τ餻��ɬ�פ�����ޤ������Τ��ᡢORB ���֥������Ȥκ������� \f2org.omg.CORBA.ORBInitialPort �ץ�ѥƥ��˿������ݡ����ֹ�����ꤷ�ޤ���

�ۤʤ�ۥ��Ⱦ�ǤΥ����С��ȥ��饤����Ȥμ¹�

Java IDL ����� RMI-IIOP �˴ؤ�����塼�ȥꥢ�������ʬ�Ǥϡ��͡��ॵ���ӥ��������С������饤����ȤΤ��٤Ƥ���ȯ�ޥ����Ǽ¹Ԥ���Ƥ��ޤ����ºݤ������Ǥ��̾�͡��ॵ���ӥ��Ȥϰۤʤ�ۥ��ȥޥ����ǥ��饤����Ȥȥ����С����¹Ԥ���ޤ���

���饤����Ȥȥ����С��ǥ͡��ॵ���ӥ��򸡺�����ˤϡ��͡��ॵ���ӥ����¹Ԥ���Ƥ���ݡ����ֹ�ȥۥ��Ȥ򤽤�餬�ΤäƤ���ɬ�פ�����ޤ��������ǡ����饤����Ȥȥ����С��Υե�������� \f2org.omg.CORBA.ORBInitialPort �� \f2org.omg.CORBA.ORBInitialHost �ץ�ѥƥ��򡢥͡��ॵ���ӥ����¹Ԥ���Ƥ���ޥ���̾�ȥݡ����ֹ�����ꤷ�ޤ���������ˤĤ��Ƥϡ� ��\f2The Hello World Example Using RMI-IIOP��

(http://java.sun.com/javase/6/docs/technotes/guides/rmi-iiop/rmiiiopexample.html) �򻲾Ȥ��Ƥ����������ޤ������ޥ�ɹԥ��ץ���� \f2-ORBInitialPort \f2nameserverport# �� \f2-ORBInitialHost \f2nameserverhostname ��Ȥäƥ͡��ॵ���ӥ��θ������򥯥饤����Ȥȥ����С����Τ餻�뤳�Ȥ��ǽ�Ǥ��� ��\f2Java IDL: Running the Hello World Example on TWO Machines�� (http://java.sun.com/javase/6/docs/technotes/guides/idl/tutorial/jidl2machines.html) �Ǥϡ����Υ��ޥ�ɹԥ��ץ�����Ȥ���ˡ�� 1 �Ĥ�������Ƥ��ޤ���

���Ȥ��С�����͡��ॵ���ӥ� \f2tnameserv ���ۥ��� \f2nameserverhost �Υݡ��� 1050 ��ǡ����饤����Ȥ��ۥ��� \f2clienthost ��ǡ������С����ۥ��� \f2serverhost ��ǡ����줾��¹Ԥ���Ƥ���Ȥ��ޤ���

2 o �ۥ��� \f2nameserverhost ��� \f2tnameserv �򼡤Τ褦�ˤ��Ƶ�ư���ޤ���

\f3
.fl
 tnameserv -ORBInitialPort 1050
.fl

.fl

2 o \f2serverhost ��Υ����С��򼡤Τ褦�ˤ��Ƶ�ư���ޤ���

\f3
.fl
 java Server -ORBInitialPort 1050 -ORBInitialHost nameserverhost
.fl

2 o \f2clienthost ��Υ��饤����Ȥ򼡤Τ褦�ˤ��Ƶ�ư���ޤ���

\f3
.fl
 java Client -ORBInitialPort 1050 -ORBInitialHost nameserverhost
.fl

-J ���ץ����

\f2tnameserv �ǻ��Ѳ�ǽ�ʥ��ޥ�ɹԥ��ץ����ϡ����ΤȤ���Ǥ���

3 -Joption \f2option �� Java ���ۥޥ�����Ϥ��ޤ��������ǡ�\f2option �ϡ� \f2Java ���ץꥱ�������ư�ġ���

(http://java.sun.com/javase/6/docs/technotes/tools/solaris/java.html) �Υ�ե���󥹥ڡ�������������Ƥ��륪�ץ����� 1 �ĤǤ������Ȥ��С�\f3-J-Xms48m �Ȥ���ȡ���ư���Υ��꤬ 48M �Х��Ȥ����ꤵ��ޤ���\f3-J ��ȤäƼ¹Ը��β��ۥޥ���˥��ץ������Ϥ����Ȥϡ��褯�Ԥ��Ƥ��ޤ���

"Java IDL ����͡��ॵ���ӥ������"

Java IDL �͡��ॵ���ӥ�����ߤ���ˤϡ��б����륪�ڥ졼�ƥ��󥰥����ƥॳ�ޥ�ɤ���Ѥ��ޤ������Ȥ��С�Unix �ץ?���ξ��� \f2kill ��Windows �ץ?���ξ��� \f2Ctrl-C �򡢤��줾����Ѥ��ޤ����͡��ॵ���ӥ�������Ū�˥���åȥ����󤵤��ޤǡ��ƤӽФ����Ԥ�³���ޤ����ʤ����͡��ॵ���ӥ���λ������ȡ�Java IDL �͡��ॵ���ӥ�����Ͽ����Ƥ���̾���ϼ����ޤ���

"����ץ륯�饤�����: ̾�����֤ؤΥ��֥������Ȥ��ɲ�"

�ʲ��˼�������ץ�ץ?���ϡ�̾����̾�����֤��ɲä�����ˡ�򼨤���ΤǤ������Υ���ץ�ץ?���ϡ����Τޤޤξ��֤Ǵ�����ư������͡��ॵ���ӥ����饤����Ȥǡ����Τ褦��ñ��ʥĥ꡼����������ΤǤ���

\f3
.fl
\f3
.fl
 \f4���\f3
.fl
 \f4�͡��ߥ󥰥���ƥ�����\f3
.fl
 / \\
.fl
 / \\
.fl
 plans \f4Personal\f3
.fl
 / \\
.fl
 / \\
.fl
 calendar schedule
.fl

������ǡ�\f3plans �ϥ��֥������Ȼ��ȡ�\f3Personal �� \f3calendar �� \f3schedule �� 2 �ĤΥ��֥������Ȼ��Ȥ��ޤޤ��͡��ߥ󥰥���ƥ����ȤǤ���

\f3
.fl
import java.util.Properties;
.fl
import org.omg.CORBA.*;
.fl
import org.omg.CosNaming.*;
.fl

.fl
public class NameClient
.fl
{
.fl
 public static void main(String args[])
.fl
 {
.fl
 try {
.fl

���ҤΡ�Java IDL ����͡��ॵ���ӥ��ε�ư�פǤϡ��͡��ॵ���С��ϥݡ��� 1050 ����Ѥ��Ƶ�ư���ޤ��������Υ����ɤǡ����Υݡ����ֹ�򥯥饤����ȥץ?�����Τ餻�ޤ���

\f3
.fl
 Properties props = new Properties();
.fl
 props.put("org.omg.CORBA.ORBInitialPort", "1050");
.fl
 ORB orb = ORB.init(args, props);
.fl

.fl

���Υ����ɤǤϡ����͡��ߥ󥰥���ƥ����Ȥ������������� \f3ctx ���������ޤ���2 ���ܤǤϡ�\f3ctx ����ߡ��Υ��֥������Ȼ��� \f3objref �˥��ԡ����ޤ������� \f3objref �ˤϡ����ȤǤ��ޤ��ޤ�̾���������Ƥ�̾�����֤��ɲä��ޤ���

\f3
.fl
 NamingContext ctx =
.fl
NamingContextHelper.narrow(orb.resolve_initial_references("NameService"));
.fl
 NamingContext objref = ctx;
.fl

.fl

���Υ����ɤǤϡ�text ����̾����plans�פ���������������ߡ��Υ��֥������Ȼ��Ȥ˥Х���ɤ��ޤ������θ塢\f2rebind ����Ѥ��ƽ��͡��ߥ󥰥���ƥ����Ȥβ��ˡ�plans�פ��ɲä��Ƥ��ޤ���\f2rebind �᥽�åɤ���Ѥ���С�\f2bind ����Ѥ�������ȯ�������㳰��ȯ���������ˡ����Υץ?�����٤ⷫ���֤��¹ԤǤ��ޤ���

\f3
.fl
 NameComponent nc1 = new NameComponent("plans", "text");
.fl
 NameComponent[] name1 = {nc1};
.fl
 ctx.rebind(name1, objref);
.fl
 System.out.println("plans rebind sucessful!");
.fl

.fl

���Υ����ɤǤϡ�directory ���Ρ�Personal�פȤ����͡��ߥ󥰥���ƥ����Ȥ�������ޤ������η�������륪�֥������Ȼ��� \f3ctx2 �򤳤�̾���˥Х���ɤ������͡��ߥ󥰥���ƥ����Ȥ��ɲä��ޤ���

\f3
.fl
 NameComponent nc2 = new NameComponent("Personal", "directory");
.fl
 NameComponent[] name2 = {nc2};
.fl
 NamingContext ctx2 = ctx.bind_new_context(name2);
.fl
 System.out.println("new naming context added..");
.fl

.fl

�Ĥ�Υ����ɤǤϡ����ߡ��Υ��֥������Ȼ��Ȥ��schedule�פȡ�calendar�פȤ���̾���ǥ͡��ߥ󥰥���ƥ����ȡ�Personal��(\f3ctx2) �˥Х���ɤ��ޤ���

\f3
.fl
 NameComponent nc3 = new NameComponent("schedule", "text");
.fl
 NameComponent[] name3 = {nc3};
.fl
 ctx2.rebind(name3, objref);
.fl
 System.out.println("schedule rebind sucessful!");
.fl

.fl
 NameComponent nc4 = new NameComponent("calender", "text");
.fl
 NameComponent[] name4 = {nc4};
.fl
 ctx2.rebind(name4, objref);
.fl
 System.out.println("calender rebind sucessful!");
.fl

.fl

.fl
 } catch (Exception e) {
.fl
 e.printStackTrace(System.err);
.fl
 }
.fl
 }
.fl
}
.fl

"����ץ륯�饤�����: ̾�����֤Υ֥饦��"

���Υ���ץ�ץ?���Ǥϡ�̾�����֤�֥饦��������ˡ�򼨤��ޤ���

\f3
.fl
import java.util.Properties;
.fl
import org.omg.CORBA.*;
.fl
import org.omg.CosNaming.*;
.fl

.fl
public class NameClientList
.fl
{
.fl
 public static void main(String args[])
.fl
 {
.fl
 try {
.fl

���ҤΡ�Java IDL ����͡��ॵ���ӥ��ε�ư�פǡ��͡��ॵ���С��ϥݡ��� 1050 ����Ѥ��Ƶ�ư���ޤ��������Υ����ɤǡ����Υݡ����ֹ�򥯥饤����ȥץ?�����Τ餻�ޤ���

\f3
.fl

.fl
 Properties props = new Properties();
.fl
 props.put("org.omg.CORBA.ORBInitialPort", "1050");
.fl
 ORB orb = ORB.init(args, props);
.fl

.fl

.fl

���Υ����ɤǤϡ����͡��ߥ󥰥���ƥ����Ȥ�������Ƥ��ޤ���

\f3
.fl
 NamingContext nc =
.fl
NamingContextHelper.narrow(orb.resolve_initial_references("NameService"));
.fl

.fl

\f2list �᥽�åɤϡ��͡��ߥ󥰥���ƥ����Ȥ��ɲä���Ƥ���Х���ǥ��󥰤�ꥹ�Ȥ��ޤ������ξ�硢���� 1000 �ĤޤǤΥХ���ǥ��󥰤����͡��ߥ󥰥���ƥ����Ȥ��� BindingListHolder ���֤���ޤ����Ĥ�ΥХ���ǥ��󥰤ϡ�BindingIteratorHolder ���֤���ޤ���

\f3
.fl
 BindingListHolder bl = new BindingListHolder();
.fl
 BindingIteratorHolder blIt= new BindingIteratorHolder();
.fl
 nc.list(1000, bl, blIt);
.fl

.fl

���Υ����ɤǤϡ��֤��줿 BindingListHolder ����Х���ǥ��󥰤������������ޤ����Х���ǥ��󥰤��ʤ����ϡ��ץ?���Ͻ�λ���ޤ���

\f3
.fl
 Binding bindings[] = bl.value;
.fl
 if (bindings.length == 0) return;
.fl

.fl

�Ĥ�Υ����ɤǤϡ��Х���ǥ��󥰤��Ф��ƥ롼�׽����Ԥ���̾������Ϥ��ޤ���

\f3
.fl
 for (int i=0; i < bindings.length; i++) {
.fl

.fl
 // get the object reference for each binding
.fl
 org.omg.CORBA.Object obj = nc.resolve(bindings[i].binding_name);
.fl
 String objStr = orb.object_to_string(obj);
.fl
 int lastIx = bindings[i].binding_name.length-1;
.fl

.fl
 // check to see if this is a naming context
.fl
 if (bindings[i].binding_type == BindingType.ncontext) {
.fl
 System.out.println( "Context: " +
.fl
bindings[i].binding_name[lastIx].id);
.fl
 } else {
.fl
 System.out.println("Object: " +
.fl
bindings[i].binding_name[lastIx].id);
.fl
 }
.fl
 }
.fl

.fl
 } catch (Exception e) {
.fl
 e.printStackTrace(System.err);
.fl
 }
.fl
 }
.fl
}
.fl