Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 51adff6dc4cce5d695a2dcdb26f1a3d7 > files > 317

libomniorb3-devel-3.04-4mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
            "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="hevea 1.05">
<TITLE>
 Introduction
</TITLE>
</HEAD>
<BODY >
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="omniORBpy002.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H1>Chapter&nbsp;1&nbsp;&nbsp; Introduction</H1>
omniORBpy is an Object Request Broker (ORB) that implements the CORBA
2.3 Python mapping&nbsp;[<A HREF="omniORBpy009.html#pythonmapping"><CITE>OMG00b</CITE></A>]. It is designed for use with
omniORB 3, but it can also be used with omniORB 2.8. If you use
omniORB 3.0, the full POA functionality is available; with omniORB 2.8
many POA functions are not supported.<BR>
<BR>
This user guide tells you how to use omniORBpy to develop CORBA
applications using Python. It assumes a basic understanding of CORBA,
and of the Python mapping. Unlike most CORBA standards, the Python
mapping document is small, and quite easy to follow.<BR>
<BR>
This manual contains all you need to know about omniORB in order to
use omniORBpy. Some sections are repeated from the omniORB manual.<BR>
<BR>
In this chapter, we give an overview of the main features of omniORBpy
and what you need to do to setup your environment to run it.<BR>
<BR>
<A NAME="toc1"></A>
<H2>1.1&nbsp;&nbsp; Features</H2>
<H3>1.1.1&nbsp;&nbsp; CORBA 2.3 compliant</H3>omniORB implements the Internet Inter-ORB Protocol (IIOP). This
protocol provides omniORB the means of achieving interoperability with
the ORBs implemented by other vendors. In fact, this is the native
protocol used by omniORB for the communication amongst its objects
residing in different address spaces.<BR>
<BR>
Moreover, the IDL to Python language mapping provided by omniORBpy
conforms to the 2.3 Python mapping specification<A NAME="text1" HREF="#note1"><SUP><FONT SIZE=2>1</FONT></SUP></A>.<BR>
<BR>

<H3>1.1.2&nbsp;&nbsp; Multithreading</H3>omniORBpy is fully multithreaded<A NAME="text2" HREF="#note2"><SUP><FONT SIZE=2>2</FONT></SUP></A>. To achieve low
IIOP call overhead, unnecessary call-multiplexing is eliminated. At
any time, there is at most one call in-flight in each communication
channel between two address spaces. To do so without limiting the
level of concurrency, new channels connecting the two address spaces
are created on demand and cached when there are more concurrent calls
in progress. Each channel is served by a dedicated thread. This
arrangement provides maximal concurrency and eliminates any thread
switching in either of the address spaces to process a
call. Furthermore, to maximise the throughput in processing large call
arguments, large data elements are sent as soon as they are processed
while the other arguments are being marshalled.<BR>
<BR>

<H3>1.1.3&nbsp;&nbsp; Missing features</H3>
<A NAME="sec:missing"></A>omniORBpy is not a complete implementation of the CORBA 2.3 core. The
following is a list of the missing features.<BR>
<BR>
<UL>
<LI> omniORB does not have its own Interface Repository. However, it
can act as a client to an IR<A NAME="text3" HREF="#note3"><SUP><FONT SIZE=2>3</FONT></SUP></A>.<BR>
<BR>

<LI> The IDL types wchar, wstring, fixed, and valuetype are not
supported in this release.<BR>
<BR>

<LI> The <TT>PortableServer.Current</TT> interface is not yet
supported.<BR>
<BR>

<LI> DII and DSI are not supported. However, since both Python code
and IDL can be generated and used at run-time, this is not a
significant restriction.</UL>These features may be implemented in the short to medium term. It is
best to check out the latest status on the omniORB home page
(<A HREF="http://www.uk.research.att.com/omniORB/"><TT>http://www.uk.research.att.com/omniORB/</TT></A>).<BR>
<BR>
<A NAME="toc2"></A>
<H2>1.2&nbsp;&nbsp; Setting up your environment</H2>
<A NAME="sec:setup"></A>omniORBpy relies on the omniORB C++ libraries. If you are building
from source, you must first build omniORB itself, as detailed in the
omniORB documentation. After that, you can build the omniORBpy
distribution, according to the instructions in the release notes.<BR>
<BR>

<H3>1.2.1&nbsp;&nbsp; Paths</H3>For Python to find omniORBpy, you must add two directories to the
<TT>PYTHONPATH</TT> environment variable. The <TT>lib/python</TT>
directory contains platform-independent Python code; the
<TT>lib/</TT><TT>$</TT><TT>FARCH</TT> directory contains
platform-specific binaries, where <TT>FARCH</TT> is the name of your
platform, such as <TT>i586_linux_glibc</TT> or <TT>x86_win32</TT>.<BR>
<BR>
On Unix platforms, set <TT>PYTHONPATH</TT> with a command like:<BR>
<BR>
<PRE>
   export PYTHONPATH=$PYTHONPATH:$TOP/lib/python:$TOP/lib/$FARCH
</PRE>On Windows, use<BR>
<BR>
<PRE>
   set PYTHONPATH=%PYTHONPATH%;%TOP%\lib\python;%TOP%\lib\x86_win32
</PRE>(Where the <TT>TOP</TT> environment variable is the root of your
omniORB tree.)<BR>
<BR>
You should also add the <TT>bin/</TT><TT>$</TT><TT>FARCH</TT> directory
to your <TT>PATH</TT>, so you can run the IDL compiler, omniidl.
Finally, add the <TT>lib/</TT><TT>$</TT><TT>FARCH</TT> directory to
<TT>LD_LIBRARY_PATH</TT>, so the omniORB core library can be found.<BR>
<BR>

<H3>1.2.2&nbsp;&nbsp; Configuration file</H3><UL>
<LI> On Unix platforms, the omniORB runtime looks for the environment
variable <TT>OMNIORB_CONFIG</TT>. If this variable is defined, it
contains the pathname of the omniORB configuration file. If the
variable is not set, omniORB will use the compiled-in pathname to
locate the file.<BR>
<BR>

<LI> On Win32 platforms (Windows NT, 2000, 95, 98), omniORB first
checks the environment variable <TT>OMNIORB_CONFIG</TT> to obtain the
pathname of the configuration file. If this is not set, it then
attempts to obtain configuration data in the system registry. It
searches for the data under the key
<CODE>HKEY_LOCAL_MACHINE\SOFTWARE\ORL\omniORB\2.0</CODE>.</UL>The configuration file is used to obtain an object reference for the
Naming Service, via either a stringified IOR or an Interoperable
Naming Service URI. When using omniORB 3, the entry in the
configuration file should be specified in the form:<BR>
<BR>
<PRE>
   ORBInitRef NameService=&lt;URI for the Naming Service&gt;
</PRE>The easiest way of specifying the Naming Service is with a
<TT>corbaname:</TT> URI, as described in
section&nbsp;<A HREF="omniORBpy004.html#sec:corbaname">4.1.2</A>.<BR>
<BR>
Comments in the configuration file should be prefixed with a
`<TT>#</TT>' character.<BR>
<BR>
On Win32 platforms, the naming service reference can be placed in the
system registry, in the (string) value <TT>ORBInitRef</TT>, under the
key
<CODE>HKEY_LOCAL_MACHINE\SOFTWARE\ORL\omniORB\2.0</CODE>.<BR>
<BR>

<H4> omniORB 2.8 configuration file entries</H4><TT>ORBInitRef</TT> is new with omniORB 3. Under omniORB 2.8, you
must use the older format (which is still supported by omniORB 3):<BR>
<BR>
<PRE>
   NAMESERVICE &lt;IOR for the Naming Service&gt;
</PRE>Two other entries are also supported, but with omniORB 3 are made
obsolete by the Interoperable Naming Service URIs:<BR>
<BR>
<PRE>
   ORBInitialHost &lt;hostname string&gt;
   ORBInitialPort &lt;port number (1-65535)&gt;
</PRE>The corresponding entries under the Win32 system registry are the keys
named <TT>ORBInitialHost</TT> and <TT>ORBInitialPort</TT>.<BR>
<BR>
The two entries provide information to the ORB to locate a
(proprietary) bootstrap service at runtime. The bootstrap service is
able to return the initial object reference for the Naming Service and
others.<BR>
<BR>
<HR WIDTH="50%" SIZE=1><DL>
<DT><A NAME="note1" HREF="#text1"><FONT SIZE=5>1</FONT></A><DD> As detailed
in section&nbsp;<A HREF="#sec:missing">1.1.3</A>, a number of features are missing.

<DT><A NAME="note2" HREF="#text2"><FONT SIZE=5>2</FONT></A><DD> This means that your Python
interpreter must have been built with thread support.

<DT><A NAME="note3" HREF="#text3"><FONT SIZE=5>3</FONT></A><DD> See section&nbsp;<A HREF="omniORBpy003.html#sec:ifrstubs">3.3</A>
for a note about using an interface repository.
</DL>
<HR>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="omniORBpy002.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>