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.
`
idlj �ϡ����ꤵ�줿 IDL �ե����뤫�� Java �Х���ǥ����������ޤ���
idl-file �ˤϡ�Interface Definition Language (IDL) �������Ǽ����Ƥ��� �ե������̾������ꤷ�ޤ��� Options ��Ǥ�դν��ǻ���Ǥ��ޤ����� idl-file �������˻��ꤹ��ɬ�פ�����ޤ���
My.idl �Ȥ���̾���� IDL �ե�������Ф��� Java �Х���ǥ������� ����ˤϡ����Τ褦�˻��ꤷ�ޤ���
idlj My.idl
���饤�����¦�ΥХ���ǥ�����������嵭�Υ��ޥ�ɤϡ� ���Τ褦�ˤ����Ǥ��ޤ���
idlj -fclient My.idl
���饤�����¦�ΥХ���ǥ��ˤϡ�������¦�Υ�����ȥ�� �����ޤ�Ƥ��ޤ����ե��������Ф��ƥ�����¦�ΥХ���ǥ��� ����������ˤϡ����Τ褦�˻��ꤷ�ޤ���
idlj -fserver My.idl
������¦�ΥХ���ǥ��ˤϡ����饤�����¦�ΥХ���ǥ��Τۤ� �˥�����ȥ����ޤ�Ƥ��ޤ��������Ϥ��٤ơ�POA (�Ѿ���ǥ�) ���饹�Ǥ������饤�����¦�ȥ�����¦��ξ��ΥХ���ǥ����������� �ˤϡ��ʲ���������ޥ�ɤΤɤ��餫�������Ѥ��Ƥ���������
idlj -fclient -fserver My.idlidlj -fall My.idl
������¦��ǥ�Ȥ��Ƥϡ��Ѿ���ǥ�� Tie �Ѿ��ǥ�� 2 ����� ���ѤǤ��ޤ���
�ǥե���ȤΥ�����¦��ǥ�ϡ��ݡ����֥륵���Х�ȷѾ���ǥ�Ǥ��� My.idl �ǥ��ե����� My ���������Ƥ���ȡ��ե����� MyPOA.java ����������ޤ����桼���ϡ� My ���Ф��Ƥ��μ���������ɬ�פ�����ޤ������μ����ϡ� MyPOA ����Ѿ����ʤ���Фʤ�ޤ���
MyPOA.java �ϡ� \f2org.omg.PortableServer.Servant
(http://java.sun.com/javase/6/docs/api/org/omg/PortableServer/Servant.html) ���ĥ���륹�ȥ��١����Υ�����ȥ�Ǥ��ꡢ���Υ�����ȥ������� IDL ���ե������˴�Ϣ���� InvokeHandler ���ե������ȥ��ڥ졼����ե�������������ޤ���\f2Portable Object Adapter (POA)
(http://java.sun.com/javase/6/docs/technotes/guides/idl/POA.html) �� PortableServer �⥸�塼��ϡ��ͥ��ƥ��� Servant ����������ޤ���Java �ץ?��ߥ���Ǥϡ� Servant ���ϡ�Java org.omg.PortableServer.Servant ���饹�˥ޥåפ���ޤ��� ����Ϥ��٤Ƥ� POA �����Х�ȼ����δ��쥯�饹�Ȥ��Ƶ�ǽ�������ץꥱ�������ȯ�Ԥ��ƤӽФ��� ¿���Υ�åɤ����ޤ����ޤ���POA ���Τ��ƤӽФ����ꡢ�����Х��ư��� ���椹�뤿��˥桼�����������Ǥ����åɤ����ޤ����Ѿ���ǥ�ˤϡ�J2SE 1.4 ������ΥС������� Java �ץ?��ߥ��� �ȸߴ����Τ��륵����¦�Х���ǥ����������뤿��� -oldImplBase �ե饰����Ѥ���Ȥ������ץ����⤢��ޤ��� \f2-oldImplBase �ե饰�λ��Ѥ���ɸ��Ǥ��뤳�Ȥ���դ��Ƥ��������������� API �Ϥޤ�ʤ���侩�Ȥʤ�ޤ������Υե饰����Ѥ���Τϡ�J2SE 1.3 �ǵ��Ҥ��줿��¸�Υ����ФȤθߴ�������ݤ���ɬ�פ�����������ˤ��Ƥ������������ξ�硢��¸�� MAKEFILE ���ѹ�����\f2-oldImplBase �ե饰�� \f2idlj ����ѥ�����ɲä���ɬ�פ�����ޤ����������ʤ��ȡ�POA �١����Υ�����¦�ޥåԥ���������Ƥ��ޤ��ޤ��� ���̸ߴ���ݻ������¦ �Х���ǥ�����������ˤϡ����Τ褦�˻��ꤷ�ޤ���
idlj -fclient -fserver -oldImplBase My.idlidlj -fall -oldImplBase My.idl
My.idl ��ǥ��ե����� My ���������Ƥ���ȡ��ե����� _MyImpleBase.java ����������ޤ����桼���ϡ� My ���Ф��Ƥ��μ���������ɬ�פ�����ޤ������μ¾ڤϡ� _MyImplBase ����Ѿ����ʤ���Фʤ�ޤ���
�⤦����Υ�����¦��ǥ�ϡ�Tie ��ǥ�ȸƤФ�ޤ�������ϡ� �Ѿ��ǥ�Ǥ���Tie ��ǥ�� Tie �ȥ�����ȥ��Ʊ���ˤ����� �Ǥ��ʤ����ᡢ�������̡�����������ɬ�פ�����ޤ������Υ� �ޥ�ɤϡ�Tie ��ǥ���Ф��ƥХ���ǥ����������ޤ���
idlj -fall My.idlidlj -fallTIE My.idl
���ե����� My �ξ�硢2 �Ĥ�Υ��ޥ�ɤ� MyPOATie.java ���������ޤ��� MyPOATie �Υ��ȥ饯���ϡ�delegate ��������ޤ��� ������Ǥϥǥե���Ȥ� POA ��ǥ����Ѥ��Ƥ���Τǡ����ȥ饯���� \f2poa ��ɬ�פȤ��ޤ��� �桼���ϡ�delegate ���Ф��Ƽ���������ɬ�פ�����ޤ��������������ե����� MyOperations ��Ѿ�����Ф褯���ۤ��Υ��饹����Ѿ�����ɬ�פϤ���ޤ��� �����������μ����� ORB �ȶ��˻��Ѥ���ˤϡ� MyPOATie ��˼������åפ���ɬ�פ�����ޤ�������ޤ���
\f3 .fl ORB orb = ORB.init(args, System.getProperties()); .fl .fl // rootpoa �ؤλ��Ȥ��������POAManager ��ͭ��ˤ��ޤ� .fl POA rootpoa = (POA)orb.resolve_initial_references("RootPOA"); .fl rootpoa.the_POAManager().activate(); .fl .fl // �����Х�Ȥ������������� ORB ����Ͽ���ޤ� .fl MyServant myDelegate = new MyServant(); .fl myDelegate.setORB(orb); .fl .fl // Tie ��������ޤ��������Х�Ȥ� delegate �ˤʤ�ޤ��� .fl MyPOATie tie = new MyPOATie(myDelegate, rootpoa); .fl .fl // Tie �� objectRef ��������ޤ� .fl My ref = tie._this(orb); .fl
������ۤ��μ�������Ѿ����ʤ���Фʤ�ʤ����ϡ�ɸ��ηѾ���ǥ� ������� Tie ��ǥ����Ѥ��뤳�Ȥ�Ǥ��ޤ���Java ��Ǥ�դο��� ���ե������Ѿ���ǧ��Ƥ��ޤ��������饹�ηѾ��˻��ѤǤ��� ����åȤ� 1 �Ĥ����Ǥ����Ѿ���ǥ����Ѥ���ȡ����Υ���åȤ��� ͭ����ޤ���Tie ��ǥ����Ѥ���ȡ�����åȤ�桼�����Ȥλ��Ѥ� ����˲���Ǥ��ޤ����������������٥�δ��ܻ��Ȥ�������� ��������������ޤ����Ĥޤꡢ��åɤ�ƤӽФ��ȡ�;ʬ�ʥ�åɸ� �ӽФ��� 1 ��ȯ�����ޤ���
1.4 �������� J2SE �С������� IDL-to-Java ���� �ޥåԥΥС������ȸߴ��������륵����¦�� Tie ��ǥ�Х���ǥ������� ����ˤϡ����Τ褦�˻��ꤷ�ޤ���
idlj -oldImplBase -fall My.idlidlj -oldImplBase -fallTIE My.idl
���ե����� My �ξ�硢���Υ��ޥ�ɤ� My_Tie.java ���������ޤ��� My_Tie �Υ��ȥ饯���ϡ� impl ��������ޤ����桼���ϡ� impl ���Ф��Ƽ���������ɬ�פ�����ޤ��������������ե����� HelloOperations ��Ѿ�����Ф褯���ۤ��Υ��饹����Ѿ�����ɬ�פϤ���ޤ��� �����������μ����� ORB �ȶ��˻��Ѥ���ˤϡ� My_Tie ��˼������åפ���ɬ�פ�����ޤ�������ޤ���
\f3 .fl ORB orb = ORB.init(args, System.getProperties()); .fl .fl // �����Х�Ȥ������������� ORB ����Ͽ���ޤ� .fl MyServant myDelegate = new MyServant(); .fl myDelegate.setORB(orb); .fl .fl // Tie ��������ޤ��������Х�Ȥ� delegate �ˤʤ�ޤ��� .fl MyPOATie tie = new MyPOATie(myDelegate); .fl .fl // Tie �� objectRef ��������ޤ� .fl My ref = tie._this(orb); .fl
ȯ�Ԥ��줿�ե�����ߤΥǥ��쥯�ȥ�ʳ��Υǥ��쥯�ȥ����¸���������ϡ� ���Τ褦�˥���ѥ����ƤӽФ��Ƥ���������
idlj -td /altdir My.idl
���ե����� My �ξ�硢�Х���ǥ��� ./My.java �ǤϤʤ� /altdir/My.java �ʤɤ��Ф���ȯ�Ԥ���ޤ���
idlj -i /includes My.idl
���Ȥ��С�My.idl �� /moreIncludes ��¸�ߤ��� Another.idl �������Ǥ�����ϡ����Υ��ޥ�ɤǥ���ѥ����ƤӽФ��ޤ���
idlj -i /includes -i /moreIncludes My.idl
���η����ǥե�����������ȡ����ޥ�ɤ�����Ĺ���ʤ뤳�Ȥ�����ޤ��� ���Τ��ᡢ���롼�ɥե�����θ�������ѥ�����Τ餻����ˡ�� �̤��Ѱդ���Ƥ��ޤ���������ˡ�ϡ��Ķ��ѿ��γ�ǰ�˻��Ƥ��ޤ����ޤ��� CLASSPATH �˥ꥹ�Ȥ���Ƥ���ǥ��쥯�ȥ���ˡ� idl.config �Ȥ���̾���Υե������������ޤ��������ơ� idl.config ��˼��η����ιԤ� 1 �ĺ������ޤ���
includes=/includes;/moreIncludes
����ѥ���Ϥ��Υե�����Ĥ������롼�ɥꥹ�Ȥ��ɤ߹��ߤޤ��� ������Ǥ� 2 �ĤΥǥ��쥯�ȥ�֤ζ��ڤ�ʸ��ϥ��ߥ���� (;) �Ǥ��뤳�� ����դ��Ƥ��������� ���ζ��ڤ�ʸ��ϥץ�åȥե�����ˤ�äưۤʤ�ޤ���Windows �ץ�åȥե�����Ǥϥ��ߥ�������Ѥ���UNIX �ץ�åȥե�����Ǥϥ�������Ѥ��롢�ʤɤΤ褦�ˤʤ�ޤ��� ���롼�ɤξ� �٤ϡ� \f2CLASSPATH �Υɥ������ (Solaris:
http://java.sun.com/javase/6/docs/technotes/tools/solaris/classpath.html) (Windows: http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html) �Ȥ��Ƥ���������My.idl
#include <MyOther.idl>
interface My
{
};
MyOther.idl
interface MyOther
{
};
���Υ��ޥ�ɤϡ� My ���Ф��� Java �Х���ǥ������������ޤ���
idlj My.idl
My.idl ����������Ƥ��뤹�٤ƤΥ����ס������ My.idl �˼����ޤ�Ƥ���ե����� (������Ǥ� MyOther.idl ) ����������Ƥ��뤹�٤ƤΥ����פ���������ˤϡ� ���Υ��ޥ�ɤ���Ѥ��Ƥ���������
idlj -emitAll My.idl
���Υǥե���Ȥε�§�ˤĤ��Ƥϡ�����������դ���ɬ�פ�����ޤ��� ���?�Х륹�����פ˽и����� #include ʸ�ϡ����Ҥɤ���˽����ޤ��������� #include ʸ�ϡ�����ݡ���ʸ�ȸ��ʤ����Ȥ��Ǥ��ޤ��������ΰϤߥ���������� �и����� #include ʸ�ϡ��̾�� #include ʸ�Ȥ��ư����ޤ����Ĥޤꡢ���롼�ɥե�������Υ����ɤ� ���ꥸ�ʥ�ե�������˽и����Ƥ��뤫�Τ褦�˰���졢����� �Ф��� Java �Х���ǥ���ȯ�Ԥ���ޤ�������ޤ���
My.idl
#include <MyOther.idl>
interface My
{
#include <Embedded.idl>
};
MyOther.idl
interface MyOther
{
};
Embedded.idl
enum E {one, two, three};
���Υ��ޥ�ɤ�¹Ԥ���ȡ�
idlj My.idl
�ʲ��� Java �ե�����Υꥹ�Ȥ���������ޤ���
./MyPackage
./My.java
MyOther.java ����������ʤ����Ȥ���դ��Ƥ�������������ϡ�����ݡ��Ȥ�������� #include ���������Ƥ��뤿��Ǥ������������̾�� #include ��������줿 E.java ����������ޤ��� Embedded.idl �ϥ��ե����� My �Υ���������˼����ޤ�Ƥ��뤿�ᡢ My �Υ��������� (�Ĥޤ� MyPackage ) ����������ޤ���
�嵭����� -emitAll �ե饰�����Ѥ���Ƥ������ϡ����٤ƤΥ��롼�ɥե�������� �������Ƥ��뤹�٤ƤΥ����פ�ȯ�Ԥ���ޤ���
Widgets. idl module Widgets
{
interface W1 {...};
interface W2 {...};
};
���Υե�������Ф��� IDL-to-Java ����ѥ����¹Ԥ���ȡ��ѥå����� Widgets ��� W1 �� W2 ���Ф��� Java �Х���ǥ�����������ޤ��� ���������ȳ�����Ǥϡ���ȤΥѥå������� com.<company name> �Ȥ���̾���Υѥå�����������֤��ʤ���Фʤ�ʤ��ȵ��ꤵ��Ƥ��ޤ��� ���Τ��ᡢ���� Widgets �ѥå������ΤޤޤǤ��Խ�ʬ�Ǥ�������˽����ˤϡ� com.abc.Widgets �Ǥʤ���Фʤ�ޤ��� Widgets �⥸�塼��ˤ��Υѥå�������Ƭ�������֤���ˤϡ����Υ��ޥ�ɤ� �¹Ԥ��Ƥ���������
idlj -pkgPrefix Widgets com.abc Widgets.idl
Widgets.idl �������Ǥ��� IDL �ե����뤬¸�ߤ�����ϡ����Υ��ޥ����ˤ� -pkgPrefix �ե饰����ꤹ��ɬ�פ�����ޤ������Υե饰����ꤷ�ʤ��ȡ�IDL �ե������ com.abc.Widgets �ѥå������ǤϤʤ� Widgets �ѥå����������ޤ���
��Ƭ����ɬ�פȤ��뤳���Υѥå�������¿��¸�ߤ�����ϡ����Ҥ��� idl.config �ե���������֤������ñ�Ǥ��礦���ƥѥå�������Ƭ���Ԥϡ����νǵ��Ҥ��ޤ���
PkgPrefix.<type>=<prefix>
���ν˽����ȡ��嵭��ιԤϼ��Τ褦�ˤʤ�ޤ���
PkgPrefix.Widgets=com.abc
���Υ��ץ�������Ѥ��Ƥ⡢��ݥ��ȥ� ID �ˤϱƶ���Ϳ���ޤ���
idlj -d MYDEF My.idl
�ϡ�My.idl ��� #define MYDEF �Ȥ����Ԥ�ޤ��Τ�Ʊ���Ǥ���
idlj -keep My.idl
�ϡ��ޤ�¸�ߤ��Ƥ��ʤ����٤ƤΥ��饤�����¦�Х���ǥ���ȯ�Ԥ��ޤ���
idlj -v My.idl
�ǥե���ȤǤϡ�����ѥ���Ͼܺ٥⡼�ɤ�ư��ޤ���
idlj -version
����ѥ��餬���������Х���ǥ�����ˡ��С����������ɽ������ޤ��� ���ޥ�ɹԤ˻��ꤵ��뤽��¾�Υ��ץ�����̵�뤵��ޤ���
-d " symbol" ����ϡ�IDL �ե�����˼��ιԤ���ꤹ��Τ�Ʊ���Ǥ���
#define symbol
-emitAll #include �ե�������˻��ꤵ��Ƥ����Τ�ޤᡢ���٤ƤΥ����פ�ȯ�Ԥ��ޤ���
-fside ȯ�Ԥ���Х���ǥ���������ޤ��� side �ˤϡ� client �� server �� serverTIE �� all �� allTIE �Τ��������줫 1 �Ĥ���ꤷ�ޤ��� -fserverTIE �� -fallTIE ���ץ�������ꤹ��ȡ��Ѿ��ǥ륹����ȥ�ȯ�Ԥ���ޤ��� �ե饰����ꤷ�ʤ����ϡ� -fclient �ȸ��ʤ���ޤ���
-i " include-path" �ǥե���ȤǤϡ����ߤΥǥ��쥯�ȥ�ǥ��롼�ɥե����뤬 ��������ޤ������Υ��ץ�������Ѥ���ȡ��ۤ��Υǥ��쥯�ȥ�� �ɲäǤ��ޤ���
-keep ���������ե����뤬���¸�ߤ����硢��¸�ե���������ޤ��� �ǥե���ȤǤϡ���¸�ե����뤬�����ޤ���
-noWarn �ٹ��å�������ɽ�����ʤ��褦�ˤ��ޤ���
-oldImplBase 1.4 ������� JDK ORB �ȸߴ����Τ��륹����ȥ���������ޤ��� �ǥե���ȤǤϡ�POA �Ѿ���ǥ�Υ�����¦�Х���ǥ�����������ޤ��� ���Υ��ץ����ϡ� ImplBase �Ѿ���ǥ륯�饹�Ǥ��륵����¦�Х���ǥ����������뤳�Ȥˤ�äơ� ��С������� Java �ץ?��ߥ���Ȥβ��̸ߴ��������ޤ���
-pkgPrefix " type prefix" �ե����륹�����פ� type �����Ф��줿��硢���Υ����פ��Ф�����������뤹�٤ƤΥե�����ˤĤ��ơ� ��������� Java �ѥå�����̾�� prefix �Ȥ�����Ƭ�����դ��ޤ��� type �ϡ��ȥåץ�٥�⥸�塼���ñ��̾�����⥸�塼��γ�����������줿 IDL �����פ�ñ��̾�Ǥ���
-pkgTranslate " type package" ����μ��̻���ǥ⥸�塼��̾ \f2type �����Ĥ��ä���硢�������줿 Java �ѥå�������Τ��٤ƤΥե�������Ф��ơ����μ��̻���Υ⥸�塼��̾�� \f2package ���֤������ޤ��� pkgPrefix �ѹ������˹Ԥ��뤳�Ȥ���դ��Ƥ��������� type �ϥȥåץ�٥�⥸�塼���ñ��̾�����⥸�塼��γ�����������줿 IDL �����פ� ñ��̾�Τ����줫�Ǥ��ꡢ�ѥå������Υե�͡�������Τ˰��פ���ɬ�פ�����ޤ���
����μ��̻Ҥ˰��פ����Ѵ��� 2 �İʾ師�Ĥ��ä���硢��äȤ�Ĺ�����פ�����ޤ������Ȥ��С�����Τ褦�˻��ꤷ���Ȥ��ޤ���
\f3 .fl -pkgTranslate foo bar -pkgTranslate foo.baz buzz.fizz .fl
���ΤȤ��������Ѵ����¹Ԥ���ޤ���
\f3 .fl foo => bar .fl foo.boo => bar.boo .fl foo.baz => buzz.fizz .fl foo.baz.bar => buzz.fizz.bar .fl
���Υѥå�����̾���Ѵ��Ǥ��ޤ���
2 * \f2org
2 * \f2org.omg �ޤ��� \f2org.omg �Υ��֥ѥå�����
�����Υѥå��������Ѵ����ߤ�ȡ�����ѥ����Բ�ǽ�ʥ����ɤ���������ޤ��� �����Υѥå������� -pkgTranslate �θ�κǽ�ΰ���Ȥ��ƻ��Ѥ���ȡ����顼�Ȥ��ư����ޤ���
-skeletonName " xxx%yyy" xxx%yyy ����ȥ��̾���դ��Υѥ�����Ȥ��ƻ��Ѥ��ޤ����ǥե���Ȥϼ��ΤȤ���Ǥ���
2 \(bu POA ���쥯�饹 ( -fserver �ޤ��� -fall ) �ξ�硢%POA
2 \(bu -oldImplBase ���饹 ( -oldImplBase ����ӡ� -fserver �ޤ��� -fall ) �ξ�硢_%ImplBase
-td " dir" ���ϥǥ��쥯�ȥ�Ȥ��ơ����ߤΥǥ��쥯�ȥ�ǤϤʤ� dir ����Ѥ��ޤ���
-tieName " xxx%yyy" �ѥ�����˱����� Tie ��̾�����դ��ޤ����ǥե���Ȥϼ��ΤȤ���Ǥ���
2 \(bu POA Tie ���쥯�饹 ( -fserverTie �ޤ��� -fallTie ) �ξ�硢%POATie
2 \(bu oldImplBase Tie ���饹 ( -oldImplBase ����ӡ� -fserverTie �ޤ��� -fallTie �Τ����줫) �ξ�硢%_Tie
-nowarn, -verbose �ܺ٥⡼�ɤˤ��ޤ���
-version �С����������ɽ�����ƽ�λ���ޤ���
���ץ����ξܺ٤ϡ��ֵ�ǽ�����פ���Ȥ��Ƥ���������
2 \(bu ���?�Х륹��������ǥ��������פ��줿���̻Ҥϡ� IDL �ץ�ߥƥ��ַ� ( Object �ޤ��� ValueBase ) ��Ʊ�����ڥ�Ǥ��äƤϤʤ�ޤ�����ϡ�����ܥ�ơ��֥뤬������ ���̻Ҥ���Ѥ��Ƥ��Ǥ˥?�ɤ���Ƥ��뤿��Ǥ��������������ľ���ȡ� �������������������뤳�Ȥˤʤ�ޤ� (�������¤ϱ�³Ū�� Ŭ�Ѥ���븫����)��
2 \(bu IDL �� fixed ���ϥ��ݡ��Ȥ���Ƥ��ޤ���
2 * ���?�Х뼱�̻ҤΥ���ݡ��Ȥ���������ޤ��������ݡ��Ȥ���Ƥ��ʤ��?���������ƤӽФ����㳰��ȯ�����ޤ��������θ���Ϥ����餯 \f2ServerDelegate DSI ��������� \f2NullPointerException �Ǥ���