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.
���Υɥ�����ȤǤϡ�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 ����ץ륯�饤�����: ̾�����֤Υ֥饦��
���֥������Ȼ��Ȥ�̾�����֤�̾���dz�Ǽ���졢���֥������Ȼ��Ȥ�̾�����Ȥϡ� ���줾��֥͡���Х���ǥ��פȸƤФ�ޤ����͡���Х���ǥ��ϡ֥͡��� ����ƥ����ȡפ��Ȥ߹��ळ�Ȥ��Ǥ��ޤ����͡��ߥ���ƥ����ȤϤ��켫�� ���͡���Х���ǥ��Ǥ��ꡢ�ե����륷���ƥ�Υ��֥ǥ��쥯�ȥ��Ʊ�������� ǽ�����ޤ������٤ƤΥХ���ǥ��ϡֽ��͡��ߥ���ƥ����ȡפ˳�Ǽ�� ��ޤ���̾�����֤ˤ����ơ����͡��ߥ���ƥ����Ȥ�ͣ��λ�³Ū�Х��� �ǥ��Ǥ�������ʳ��Υ͡��ߥ���ƥ����Ȥϡ�Java IDL �Υ͡��ॵ���С��ץ?������ߤ����Ƶ�ư�����ȼ����ޤ���
���ץ�åȤޤ��ϥ��ץꥱ������� COS �͡��ॵ���ӥ�����Ѥ��뤿��ˤϡ����� ORB �ϥ͡��ॵ���ӥ���ư��Ƥ���ۥ��ȤΥݡ��Ȥ��ΤäƤ��뤫�����Υ͡��ॵ���ӥ��� ʸ�����줿���͡��ߥ���ƥ����Ȥ˥��������Ǥ��ʤ���Фʤ�ޤ��� �͡��ॵ���ӥ��ϡ�Java IDL �Υ͡��ॵ���ӥ��Ǥ⤽��¾�� COS ���Υ͡��ॵ���ӥ��Ǥ⤫�ޤ��ޤ���
"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
\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 �͡��ॵ���ӥ�����ߤ���ˤϡ��б����륪�ڥ졼�ƥ������ƥॳ�ޥ�ɤ���Ѥ��ޤ������Ȥ��С�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