OpenCCM - Production Module User's Guide | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Production Module User's GuideThe OpenCCM Production Tool Chain
The OpenCCM Production Tool Chain is a set of tools for compiling CORBA Components specifications (i.e. OMG IDL 3.0, OMG PSDL OMG CIDL) and for generating OMG IDL 2.x interfaces.
The OpenCCM Production Tool Chain is composed of the following tools:
In the following sections, all OpenCCM Production Tool Chain scripts are illustrated on top of the ORBacus 4.1.0 product running on a Linux system. However all these following scripts could be used in the same way on any ORB products and operating systems supported by OpenCCM. The OpenCCM Interface RepositoryThe OpenCCM Interface Repository is the central part of the OpenCCM Production Tool Chain. This permanent repository is composed of CORBA objects storing CORBA Components specifications and making them accessible at runtime. The OMG IDL interfaces of the OpenCCM Interface Repository are fully conform to the interfaces defined in the CORBA 3.0 Core Specification. Then the following OpenCCM compilers feed CORBA Components specifications into the OpenCCM Interface Repository and the following OpenCCM generators obtain specifications from the OpenCCM Interface Repository. Let's note that before using any OpenCCM Production Tool Chain tools, it is required to start the OpenCCM Interface Repository with the ir3_start script. Warning: To use any of the OpenCCM generation tools, it is required to feed the OpenCCM Interface Repository with OMG IDL 3.0 files or XMI 1.1 UML 1.4 docuuments. Starting the OpenCCM Interface Repository
The $ ir3_start The OpenCCM Interface Repository will be started. Creating the $OpenCCM_CONFIG_DIR directory. Launching the OpenCCM Interface Repository. Feeding the OpenCCM Interface Repository with the IFR_3_0.idl file. . . . Feeding the OpenCCM Interface Repository with the Components.idl file. . . . The OpenCCM Interface Repository is started. $
Let's note that this script automatically creates the Moreover, the IOR, PID, and standard output of the started OpenCCM Interface Repository are stored into the OpenCCM Configuration Repository, e.g.: $ ls $OpenCCM_CONFIG_DIR IR3.IOR IR3.PID IR3.output IR3.start $ Warning: Only one OpenCCM Interface Repository can be started for an OpenCCM Configuration Repository, e.g.: $ ir3_start Error: The OpenCCM Interface Repository is already started! $
By default, the OpenCCM Interface Repository automatically computes the OMG IDL 2.x mapping
for component and home definitions. The $ ir3_start --no-mappings . . . $ Warning: Don't disable the OMG IDL 2.x mapping computation if you will use OpenCCM generators.
See the Checking if the OpenCCM Interface Repository is started
The $ ir3_stop . . . $ ir3_started Error: The OpenCCM Interface Repository is not started! $ Let's note that this OpenCCM script is mainly used by other OpenCCM scripts to check if the OpenCCM Interface Repository is started or not. Stopping the OpenCCM Interface Repository
The $ ir3_start . . . $ ir3_stop The OpenCCM Interface Repository will be stopped. Removing the $OpenCCM_CONFIG_DIR directory. The OpenCCM Interface Repository is stopped. $
Let's note that this script shutdowns the OpenCCM Interface Repository process,
removes its associated IOR, PID, and standard output files, and removes the
Checking OMG IDL 3.0 files
The $ cat test/sample.idl3 // This file is the OMG IDL 3.0 example used in the OpenCCM User's Guide. #pragma prefix "ccm.objectweb.org" module sample { component MyComponent {}; home MyHome manages MyComponent {}; }; $ $ idl3_check test/sample.idl3 idl3_check 0.9.0: Reading from file test/sample.idl3... idl3_check 0.9.0: Preprocessing file test/sample.idl3... idl3_check 0.9.0: File test/sample.idl3 preprocessed. idl3_check 0.9.0: Compiling test/sample.idl3 file... idl3_check 0.9.0: Compilation completed: 0 warning. $
The
To obtain usage and help information, do: $ idl3_check --help Usage: idl3_check [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] omg_idl_file Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path Description: Compile and check an OMG IDL file $ To obtain version information, do: $ idl3_check --version OpenCCM idl3_check 0.9.0 Copyright (C) 2000-2005 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ idl3_check --silent test/sample.idl3 $
By default, the $ idl3_check --cpp /usr/bin/cpp test/sample.idl3 . . . $
Let's note that the standard $ idl3_check -DFOO -Itest test/sample.idl3 . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG IDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ... Feeding OMG IDL 3.0 files into the OpenCCM Interface Repository
The $ ir3_feed test/sample.idl3 ir3_feed 0.9.0: Reading from file test/sample.idl3... ir3_feed 0.9.0: Preprocessing file test/sample.idl3... ir3_feed 0.9.0: File test/sample.idl3 preprocessed. ir3_feed 0.9.0: Compiling test/sample.idl3 file... ir3_feed 0.9.0: Compilation completed: 0 warning. $ Warning: OMG IDL files must be fed into the OpenCCM Interface Repository only once!!!
The
To obtain usage and help information, do: $ ir3_feed --help Usage: ir3_feed [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] omg_idl_files Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path Description: Feed the OpenCCM Interface Repository with OMG IDL files $ To obtain version information, do: $ ir3_feed --version OpenCCM ir3_feed 0.9.0 Copyright (C) 2000-2005 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ ir3_feed --silent test/sample.idl3 $
By default, the $ ir3_feed --cpp /usr/bin/cpp test/sample.idl3 . . . $
Let's note that the standard $ ir3_feed -DFOO -Itest test/sample.idl3 . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG IDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ... Destroying OpenCCM Interface Repository objects
The Destroying an object from the OpenCCM Interface Repository requires to provide its full OMG IDL scope name, e.g.: $ ir3_destroy ::sample ir3_destroy 0.9.0: ::sample destroyed successfully. $ If the object to destroy does not exist in the OpenCCM Interface Repository, then an error is reported, e.g.: $ ir3_destroy ::sample ir3_destroy 0.9.0: ::sample not found in the OpenCCM Interface Repository! $ If the object is referenced by other OpenCCM Interface Repository objects, then it could not be destroyed until other objects are destroyed, e.g.: $ ir3_feed test/sample.idl3 . . . $ ir3_destroy sample::MyComponent ir3_destroy 0.9.0: sample::MyComponent not destroyed because dependency exits in the OpenCCM Interface Repository preventing destruction! $ ir3_destroy sample::MyHome ir3_destroy 0.9.0: sample::MyHome destroyed successfully. $ ir3_destroy sample::MyComponent ir3_destroy 0.9.0: sample::MyComponent destroyed successfully. $
The
To obtain usage and help information, do: $ ir3_destroy --help Usage: ir3_destroy [-h|--help] [--version] [--silent] omg_idl_scoped_name Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages Description: Destroy an object from the OpenCCM Interface Repository $ To obtain version information, do: $ ir3_destroy --version OpenCCM ir3_destroy 0.9.0 Copyright (C) 2000-2005 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ ir3_feed test/sample.idl3 . . . $ ir3_destroy --silent sample $ Generating OMG IDL 3.0 files from the OpenCCM Interface Repository
The $ ir3_idl3 sample ir3_idl3 0.9.0: Generating OMG IDL 3.0 for sample... ir3_idl3 0.9.0: OMG IDL 3.0 generated in generated.idl3. $
By default, the $ cat generated.idl3 . . . #ifndef __SAMPLE__ #define __SAMPLE__ #pragma prefix "ccm.objectweb.org" module sample { component MyComponent; component MyComponent { }; home MyHome manages ::sample::MyComponent { }; }; #endif $
The
To obtain usage and help information, do: $ ir3_idl3 --help Usage: ir3_idl3 [-h|--help] [--version] [--silent] [-o outputfile] [-i ir_object] declaration Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages -o outputfile Set the output file name, default is generated.idl3 -i ir_object Add import ir_object statement Description: Generate OMG IDL 3.0 for a declaration from the OpenCCM Interface Repository $ To obtain version information, do: $ ir3_idl3 --version OpenCCM ir3_idl3 0.9.0 Copyright (C) 2000-2005 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ ir3_idl3 --silent sample $
By default, the $ ir3_idl3 -o tmp.idl3 sample ir3_idl3 0.9.0: Generating OMG IDL 3.0 for sample ... ir3_idl3 0.9.0: OMG IDL 3.0 generated in tmp.idl3. $ $ cat tmp.idl3 . . . #ifndef __SAMPLE__ #define __SAMPLE__ #pragma prefix "ccm.objectweb.org" module sample { component MyComponent; component MyComponent { }; home MyHome manages ::sample::MyComponent { }; }; #endif $
Using the $ ir3_idl3 -i Components sample . . . $ cat generated.idl3 . . . import Components; . . . $ Generating equivalent OMG IDL 2.4 mapping from the OpenCCM Interface Repository
The $ ir3_idl2 sample ir3_idl2 0.9.0: Generating OMG IDL2 for sample... ir3_idl2 0.9.0: OMG IDL2 generated in generated.idl and generated_local.idl. $
The $ cat generated.idl . . . #ifndef __SAMPLE__ #define __SAMPLE__ #include <Components.idl> #pragma prefix "ccm.objectweb.org" module sample { interface MyComponent; interface MyHomeExplicit; interface MyHomeImplicit; interface MyHome; interface MyComponent : ::Components::CCMObject { }; interface MyHomeExplicit : ::Components::CCMHome { }; interface MyHomeImplicit : ::Components::KeylessCCMHome { ::sample::MyComponent create() raises(::Components::CreateFailure); }; interface MyHome : ::sample::MyHomeExplicit, ::sample::MyHomeImplicit { }; }; #endif $
The $ cat generated_local.idl . . . #ifndef __SAMPLE__LOCAL #define __SAMPLE__LOCAL #include "generated.idl" #pragma prefix "ccm.objectweb.org" module sample { local interface CCM_MyComponent_Executor; local interface CCM_MyComponent; local interface CCM_MyComponent_Context; local interface CCM_MyHomeExplicit; local interface CCM_MyHomeImplicit; local interface CCM_MyHome; local interface CCM_MyComponent_Executor : ::Components::EnterpriseComponent { }; local interface CCM_MyComponent : ::sample::CCM_MyComponent_Executor { }; local interface CCM_MyComponent_Context : ::Components::CCMContext { }; local interface CCM_MyHomeExplicit : ::Components::HomeExecutorBase { }; local interface CCM_MyHomeImplicit { ::Components::EnterpriseComponent create() raises(::Components::CCMException); }; local interface CCM_MyHome : ::sample::CCM_MyHomeExplicit, ::sample::CCM_MyHomeImplicit { }; }; #endif $ See the CORBA Component Model Specification for more information about the equivalent OMG IDL 2.4 mapping.
The
To obtain usage and help information, do: $ ir3_idl2 --help Usage: ir3_idl2 [-h|--help] [--version] [--silent] [-o outputfile] [-i file] [-ipath file] declaration Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages -o outputfile Set the output file name, default is generated.idl -i file Add a #include <file> statement -ipath file Add a #include "file" statement where file must be the complete file path Description: Generate OMG IDL2 for a declaration from the OpenCCM Interface Repository $ To obtain version information, do: $ ir3_idl2 --version OpenCCM ir3_idl2 0.9.0 Copyright (C) 2000-2005 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ ir3_idl2 --silent sample $
By default, the $ ir3_idl2 -o tmp.idl sample ir3_idl2 0.9.0: Generating OMG IDL2 for sample... ir3_idl2 0.9.0: OMG IDL2 generated in tmp.idl and tmp_local.idl. $ cat tmp.idl tmp_local.idl . . . $
Using the $ ir3_idl2 -i file1.idl sample . . . $ cat generated.idl . . . #include <file1.idl> . . . $
Using the $ ir3_idl2 -ipath file2.idl sample . . . $ cat generated.idl . . . #include "file2.idl" . . . $ Compiling specifications and regenerating the OMG CIDL part only
The $ cidl test/sample.cidl cidl 0.9.0: Reading from file test/sample.cidl... cidl 0.9.0: Preprocessing file test/sample.cidl... cidl 0.9.0: File test/sample.cidl preprocessed. cidl 0.9.0: Compiling test/sample.cidl file... cidl 0.9.0: Compilation completed: 0 warning. cidl 0.9.0: Generating CIDL from test/sample.cidl... cidl 0.9.0: CIDL generated in generated.cidl. $
By default, the $ cat generated.cidl . . . #pragma prefix "ccm.objectweb.org" module sample { composition session SampleSessionComposition { home executor HomeImpl { implements ::sample::MyHome; manages ComponentImpl; }; }; }; $
The
To obtain usage and help information, do: $ cidl --help Usage: cidl [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] [-o outputfile] file Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path -o outputfile Set the output file name, default is generated.cidl Description: Compile a file and regenerate the OMG CIDL part only $ To obtain version information, do: $ cidl --version OpenCCM cidl 0.9.0 Copyright (C) 2000-2005 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ cidl --silent test/sample.cidl $
By default, the $ cidl --cpp /usr/bin/cpp test/sample.cidl . . . $
Let's note that the standard $ cidl -DFOO -Itest test/sample.cidl . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG CIDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ...
By default, the $ cidl -o tmp.cidl test/sample.cidl . . . $ cat tmp.cidl . . . $ Compiling specifications and regenerating the OMG PSDL part only
The $ psdl test/sample.psdl psdl 0.9.0: Reading from file test/sample.psdl... psdl 0.9.0: Preprocessing file test/sample.psdl... psdl 0.9.0: File test/sample.psdl preprocessed. psdl 0.9.0: Compiling test/sample.psdl file... psdl 0.9.0: Compilation completed: 0 warning. psdl 0.9.0: Generating PSDL from test/sample.psdl... psdl 0.9.0: PSDL generated in generated.psdl. $
By default, the $ cat generated.psdl . . . #pragma prefix "ccm.objectweb.org" module sample { storagetype ST; storagetype ST { }; storagehome SH of ::sample::ST { }; }; $
The
To obtain usage and help information, do: $ psdl --help Usage: psdl [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] [-o outputfile] file Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path -o outputfile Set the output file name, default is generated.psdl Description: Compile a file and regenerate the OMG PSDL part only $ To obtain version information, do: $ psdl --version OpenCCM psdl 0.9.0 Copyright (C) 2000-2005 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ psdl --silent test/sample.psdl $
By default, the $ psdl --cpp /usr/bin/cpp test/sample.psdl . . . $
Let's note that the standard $ psdl -DFOO -Itest test/sample.psdl . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG PSDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ...
By default, the $ psdl -o tmp.psdl test/sample.psdl . . . $ cat tmp.psdl . . . $ |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright © 1999-2005, ObjectWeb Consortium | contact | webmaster | Last modified at 2005-07-07 02:04 PM |