author | avstepan |
Sun, 13 Sep 2015 23:31:47 +0300 | |
changeset 32688 | 936c391804a5 |
parent 29827 | aac4782e69ac |
child 45144 | a81f7f7ccb59 |
permissions | -rw-r--r-- |
4 | 1 |
<HTML> |
2 |
<HEAD> |
|
3 |
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> |
|
4 |
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en]C-gatewaynet (WinNT; U) |
|
5 |
[Netscape]"> |
|
6 |
<TITLE>package</TITLE> |
|
7 |
<!-- |
|
8 |
/* |
|
29827 | 9 |
* Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved. |
4 | 10 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
11 |
* |
|
12 |
* This code is free software; you can redistribute it and/or modify it |
|
13 |
* under the terms of the GNU General Public License version 2 only, as |
|
5555 | 14 |
* published by the Free Software Foundation. Oracle designates this |
4 | 15 |
* particular file as subject to the "Classpath" exception as provided |
5555 | 16 |
* by Oracle in the LICENSE file that accompanied this code. |
4 | 17 |
* |
18 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
19 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
20 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
21 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
22 |
* accompanied this code). |
|
23 |
* |
|
24 |
* You should have received a copy of the GNU General Public License version |
|
25 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
26 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
27 |
* |
|
5555 | 28 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
29 |
* or visit www.oracle.com if you need additional information or have any |
|
30 |
* questions. |
|
4 | 31 |
*/ |
32 |
--> |
|
33 |
</HEAD> |
|
34 |
<BODY BGCOLOR="#FFFFFF"> |
|
35 |
Provides the mapping of the OMG CORBA APIs to the Java<SUP><FONT |
|
36 |
SIZE=-2>TM</FONT></SUP> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
37 |
programming language, including the class <code>ORB</code>, which is implemented |
4 | 38 |
so that a programmer can use it as a fully-functional Object Request Broker |
39 |
(ORB). |
|
40 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
41 |
<P>For a precise list of supported sections of official CORBA specifications with which |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
42 |
the Java[TM] Platform, Standard Edition 6 complies, see <A |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
43 |
HREF="doc-files/compliance.html"><em>Official Specifications for CORBA support in |
4 | 44 |
Java[TM] SE 6</em></A>. |
45 |
||
46 |
||
47 |
<H1>General Information</H1> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
48 |
The information in this section is information relevant to someone who |
4 | 49 |
compiles Interface Definition Language (IDL) files and uses the |
50 |
ORB to write clients and servers. |
|
51 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
52 |
<P>The classes and interfaces described in this section can be put into |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
53 |
four groups: <code>ORB classes</code>, Exceptions, <code>Helper</code> classes, |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
54 |
and <code>Holder</code> classes. |
4 | 55 |
|
56 |
<H2> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
57 |
The <code>ORB</code> Class</H2> |
4 | 58 |
|
59 |
<P>An ORB handles (or brokers) method invocations between a client and |
|
60 |
the method's implementation on a server. Because the client and server |
|
61 |
may be anywhere on a network, and because the invocation and implementation |
|
62 |
may be written in different programming languages, an ORB does a great |
|
63 |
deal of work behind the scenes to accomplish this communication. |
|
64 |
||
65 |
<P>Most of what an ORB does is completely transparent to the user, and a major |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
66 |
portion of the <code>CORBA</code> package consists of classes used by the ORB |
4 | 67 |
behind the scenes. The result is that most programmers will use only a |
68 |
small part of this package directly. In fact, most programmers will use |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
69 |
only a few methods from the <code>ORB</code> class, some exceptions, and |
4 | 70 |
occasionally, |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
71 |
a holder class. |
4 | 72 |
<H3> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
73 |
<code>ORB</code> Methods</H3> |
4 | 74 |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
75 |
<P>Before an application can enter the CORBA environment, it must first: |
4 | 76 |
<UL> |
77 |
<LI>Be initialized into the ORB and possibly the object adapter (POA) environments. |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
78 |
<LI>Get references to ORB object (for use in future ORB operations) |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
79 |
and perhaps other objects (including the root POA or some Object Adapter objects). |
4 | 80 |
</UL> |
81 |
<P>The following operations are provided to initialize applications and obtain |
|
82 |
the appropriate object references: |
|
83 |
<UL> |
|
84 |
<LI>Operations providing access to the ORB, which are discussed in this |
|
85 |
section. |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
86 |
<LI>Operations providing access to Object Adapters, Interface Repository, |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
87 |
Naming Service, and other Object Services. These operations are described |
4 | 88 |
in <a href="#adv"><em>Other Classes</em></a>. |
89 |
</UL> |
|
90 |
<P> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
91 |
When an application requires a CORBA environment it needs a mechanism to |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
92 |
get an ORB object reference and possibly an OA object reference |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
93 |
(such as the root POA). This serves two purposes. First, it initializes |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
94 |
an application into the ORB and OA environments. Second, it returns the |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
95 |
ORB object reference and the OA object reference to the application |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
96 |
for use in future ORB and OA operations. |
4 | 97 |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
98 |
<P>In order to obtain an ORB object reference, applications call |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
99 |
the <code>ORB.init</code> operation. The parameters to the call can comprise an |
4 | 100 |
identifier for the ORB for which the object reference is required, |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
101 |
and an arg_list, which is used to allow environment-specific data to be |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
102 |
passed into the call. |
4 | 103 |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
104 |
<P>These are the <code>ORB</code> methods |
4 | 105 |
that provide access to the ORB: |
106 |
<UL> |
|
107 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
108 |
<code><b>init</b>()</code> |
4 | 109 |
|
110 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
111 |
<code><b>init</b>(String [] args, Properties props)</code> |
4 | 112 |
|
113 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
114 |
<code><b>init</b>(Applet app, Properties props)</code> |
4 | 115 |
</UL> |
116 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
117 |
<P>Using the <code>init()</code> method without parameters initiates |
4 | 118 |
a singleton ORB, which can only |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
119 |
give typecode creation <code>any</code>s needed in code generated |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
120 |
in Helper classes by <code>idlj</code>. |
4 | 121 |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
122 |
<P>Applications require a portable means by which to obtain their |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
123 |
initial object references. References are required for the root |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
124 |
POA, POA Current, Interface Repository, and various Object Services |
4 | 125 |
instances. The functionality required by the application is similar |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
126 |
to that provided by the Naming Service. However, the OMG does not |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
127 |
want to mandate that the Naming Service be made available to all |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
128 |
applications in order that they may be portably initialized. |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
129 |
Consequently, the operations shown in this section provide a |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
130 |
simplified, local version of the Naming Service that applications |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
131 |
can use to obtain a small, defined set of object references which |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
132 |
are essential to its operation. Because only a small well-defined |
4 | 133 |
set of objects are expected with this mechanism, the naming context |
134 |
can be flattened to be a single-level name space. This simplification |
|
135 |
results in only two operations being defined to achieve the functionality |
|
136 |
required. |
|
137 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
138 |
<P>Initial references are obtained via two operations provided in |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
139 |
the ORB object interface, providing facilities to list and |
4 | 140 |
resolve initial object references. These are: |
141 |
<UL> |
|
142 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
143 |
<code><b>resolve_initial_references</b>(String name)</code> |
4 | 144 |
<LI> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
145 |
<code><b>list_initial_services</b>()</code> |
4 | 146 |
<LI> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
147 |
<code><b>register_initial_reference</b>(String id, org.omg.CORBA.Object obj)</code> |
4 | 148 |
</UL> |
149 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
150 |
<P>An example that uses some of these methods is <A |
4 | 151 |
HREF="{@docRoot}/../technotes/guides/idl/GShome.html"> |
152 |
<em>Getting Started with Java IDL</em></A>. |
|
153 |
||
154 |
<H2> |
|
155 |
Exceptions</H2> |
|
156 |
Exceptions in Java IDL are similar to those in any code written in the |
|
157 |
Java programming language. If a method is defined to throw an exception, |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
158 |
then any code using that method must have a <code>try</code>/<code>catch</code> |
4 | 159 |
block and handle that exception when it is thrown. |
160 |
||
161 |
<P>The documentation on <A |
|
162 |
HREF="{@docRoot}/../technotes/guides/idl/jidlExceptions.html"><em>Java |
|
163 |
IDL exceptions</em></A> has more information and explains the difference between |
|
164 |
system exceptions and user-defined exceptions. |
|
165 |
||
166 |
<P>The following is a list of the system exceptions (which are unchecked |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
167 |
exceptions inheriting through <code><a href="SystemException.html"> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
168 |
org.omg.CORBA.SystemException</a></code> from |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
169 |
<code>java.lang.RuntimeException</code>) that are defined in the package |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
170 |
<code>org.omg.CORBA</code>: |
4 | 171 |
<PRE><code> |
172 |
BAD_CONTEXT |
|
173 |
BAD_INV_ORDER |
|
174 |
BAD_OPERATION |
|
175 |
BAD_PARAM |
|
176 |
BAD_TYPECODE |
|
177 |
COMM_FAILURE |
|
178 |
DATA_CONVERSION |
|
179 |
FREE_MEM |
|
180 |
IMP_LIMIT |
|
181 |
INITIALIZE |
|
182 |
INTERNAL |
|
183 |
INTF_REPOS |
|
184 |
INVALID_TRANSACTION |
|
185 |
INV_FLAG |
|
186 |
INV_IDENT |
|
187 |
INV_OBJREF |
|
188 |
INV_POLICY |
|
189 |
MARSHAL |
|
190 |
<a href="#NO_IMPLEMENT">NO_IMPLEMENT</a> |
|
191 |
NO_MEMORY |
|
192 |
NO_PERMISSION |
|
193 |
NO_RESOURCES |
|
194 |
NO_RESPONSE |
|
195 |
OBJECT_NOT_EXIST |
|
196 |
OBJ_ADAPTER |
|
197 |
PERSIST_STORE |
|
198 |
TRANSACTION_REQUIRED |
|
199 |
TRANSACTION_ROLLEDBACK |
|
200 |
TRANSIENT |
|
201 |
UNKNOWN |
|
202 |
</code></PRE> |
|
203 |
<P> |
|
204 |
The following is a list of user-defined exceptions defined in the package |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
205 |
<code>org.omg.CORBA</code>. |
4 | 206 |
<PRE><code> |
207 |
Bounds |
|
208 |
UnknownUserException |
|
209 |
WrongTransaction |
|
210 |
PolicyError |
|
211 |
</code></PRE> |
|
212 |
||
213 |
<H2>Subpackages</H2> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
214 |
There are some packages inside the <code>CORBA</code> package with |
4 | 215 |
"Package" as part of their names. These packages are generally quite small |
216 |
because all they do is provide exceptions or classes for use by interfaces |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
217 |
and classes in the <code>CORBA</code> package. |
4 | 218 |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
219 |
<P>For example, the package <code><a href="TypeCodePackage/package-summary.html"> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
220 |
org.omg.CORBA.TypeCodePackage</a></code> contains |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
221 |
two exceptions thrown by methods in the class <code>TypeCode</code>. These |
4 | 222 |
exceptions are: |
223 |
<UL> |
|
224 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
225 |
<code>BadKind</code> |
4 | 226 |
|
227 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
228 |
<code>Bounds</code> |
4 | 229 |
</UL> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
230 |
The package <code><a href="ORBPackage/package-summary.html"> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
231 |
org.omg.CORBA.ORBPackage</a></code> contains two exceptions: |
4 | 232 |
<UL> |
233 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
234 |
<code>InvalidName</code> |
4 | 235 |
|
236 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
237 |
<code>InconsistentTypeCode</code> |
4 | 238 |
</UL> |
239 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
240 |
<P>Another package that is a subpackage of <code>CORBA</code> is the |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
241 |
<code><a href="portable/package-summary.html">portable</a></code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
242 |
package. It provides a set of ORB APIs that makes it |
4 | 243 |
possible for code generated by one vendor's IDL compiler to run |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
244 |
on another vendor's ORB. |
4 | 245 |
|
246 |
||
247 |
||
248 |
||
249 |
<H2> |
|
250 |
Holder classes</H2> |
|
251 |
||
252 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
253 |
<P>Support for out and inout parameter passing modes requires the use of |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
254 |
additional <em><a href="doc-files/generatedfiles.html#holder">holder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
255 |
classes</a></em>. Because the Java programming language does not support out or |
4 | 256 |
inout parameters, holder classes are needed as a means of passing a parameter |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
257 |
that can be modified. To support portable stubs and skeletons, |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
258 |
holder classes also implement the |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
259 |
<code><a href="portable/Streamable.html">org.omg.CORBA.portable.Streamable</a></code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
260 |
interface. |
4 | 261 |
|
262 |
<P>Holder classes are named by appending "Holder" to the name of the type. |
|
263 |
The name of the type refers to its name in the Java programming language. For |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
264 |
example, a holder class for the interface named <code>Account</code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
265 |
in the Java programming |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
266 |
language would be named <code>AccountHolder</code>. |
4 | 267 |
|
268 |
||
269 |
<P>Holder classes are available for all of the basic IDL |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
270 |
datatypes in the <code>org.omg.CORBA</code> package. So, for example, |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
271 |
there are already-defined classes for <code>LongHolder</code>, <code>ShortHolder</code>, |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
272 |
<code>FloatHolder</code>, and so on. Classes are also generated for |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
273 |
all named user-defined IDL types except those defined by <code>typedefs</code>. |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
274 |
(Note that in this context user defined includes types that are |
4 | 275 |
defined in OMG specifications such as those for the Interface |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
276 |
Repository, and other OMG services.) |
4 | 277 |
|
278 |
||
279 |
<P>Each holder class has: |
|
280 |
<UL> |
|
281 |
<LI>a constructor from an instance |
|
282 |
<LI>a default constructor |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
283 |
<LI>a public instance member, <code>value</code> which is the typed value. |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
284 |
<LI>a method for reading an input stream and assigning the contents to the |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
285 |
type's <code>value</code> field |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
286 |
<LI>a method for writing the value of the <code>value</code> field to an output stream |
4 | 287 |
<LI>a method for getting the typecode of the type |
288 |
</UL> |
|
289 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
290 |
<P>The default constructor sets the value field to the default value for the |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
291 |
type as defined by the Java language: |
4 | 292 |
<UL> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
293 |
<LI><code>false</code> for boolean |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
294 |
<LI><code>0</code> for numeric and char types |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
295 |
<LI><code>null</code> for strings and object references |
4 | 296 |
</UL> |
297 |
||
298 |
||
299 |
||
300 |
<P> |
|
301 |
As an example, if the interface <code>Account</code>, defined in OMG IDL, |
|
302 |
were mapped to the Java programming language, the following holder class |
|
303 |
would be generated: |
|
304 |
<PRE> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
305 |
public final class AccountHolder implements |
4 | 306 |
org.omg.CORBA.portable.Streamable |
307 |
{ |
|
308 |
// field that holds an Account object |
|
309 |
public Account value = null; |
|
310 |
||
311 |
// default constructor |
|
312 |
public AccountHolder () |
|
313 |
{ |
|
314 |
} |
|
315 |
||
316 |
// creates a new AccountHolder from initialValue |
|
317 |
public AccountHolder (Account initialValue) |
|
318 |
{ |
|
319 |
value = initialValue; |
|
320 |
} |
|
321 |
||
322 |
// reads the contents of i and assigns the contents to value |
|
323 |
public void _read (org.omg.CORBA.portable.InputStream i) |
|
324 |
{ |
|
325 |
value = AccountHelper.read (i); |
|
326 |
} |
|
327 |
||
328 |
// writes value to o |
|
329 |
public void _write (org.omg.CORBA.portable.OutputStream o) |
|
330 |
{ |
|
331 |
AccountHelper.write (o, value); |
|
332 |
} |
|
333 |
||
334 |
// returns the typecode for Account |
|
335 |
public org.omg.CORBA.TypeCode _type () |
|
336 |
{ |
|
337 |
return AccountHelper.type (); |
|
338 |
} |
|
339 |
||
340 |
} |
|
341 |
</PRE> |
|
342 |
||
343 |
<P>For more information on Holder classes, see Chapter 1.4, <em>Mapping for |
|
23749 | 344 |
Basic Types</em> in the <a href="http://www.omg.org/cgi-bin/doc?ptc/00-01-08"> |
4 | 345 |
<em>OMG IDL to Java Language Mapping</em></a>. The Holder classes defined |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
346 |
in the package <code>org.omg.CORBA</code> are: |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
347 |
<PRE><code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
348 |
AnyHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
349 |
AnySeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
350 |
BooleanHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
351 |
BooleanSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
352 |
ByteHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
353 |
CharHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
354 |
CharSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
355 |
CurrentHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
356 |
DoubleHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
357 |
DoubleSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
358 |
FixedHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
359 |
FloatHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
360 |
FloatSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
361 |
IntHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
362 |
LongHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
363 |
LongLongSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
364 |
LongSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
365 |
ObjectHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
366 |
OctetSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
367 |
ParameterModeHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
368 |
PolicyErrorHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
369 |
PolicyListHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
370 |
PrincipalHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
371 |
ServiceInformationHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
372 |
ShortHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
373 |
ShortSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
374 |
StringHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
375 |
StringSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
376 |
TypeCodeHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
377 |
ULongLongSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
378 |
ULongSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
379 |
UnknownUserExceptionHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
380 |
UShortSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
381 |
ValueBaseHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
382 |
WCharSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
383 |
WrongTransactionHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
384 |
WStringSeqHolder |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
385 |
</code></PRE> |
4 | 386 |
|
387 |
<h2>Helper Classes </h2> |
|
388 |
<P>Helper files supply several static methods needed to manipulate the type. |
|
389 |
These include: |
|
390 |
<UL> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
391 |
<LI><code>Any</code> insert and extract operations for the type |
4 | 392 |
<LI>getting the repository id |
393 |
<LI>getting the typecode |
|
394 |
<LI>reading and writing the type from and to a stream |
|
395 |
<LI>implement the <code>ValueHelper</code> interface (if it is a user-defined |
|
396 |
value type) |
|
397 |
</UL> |
|
398 |
||
399 |
<P>The helper class for a mapped IDL interface or abstract interface |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
400 |
also include narrow operation(s). The static narrow method allows |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
401 |
an <code>org.omg.CORBA.Object</code> to be narrowed to the object reference |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
402 |
of a more specific type. The IDL exception <code>CORBA.BAD_PARAM</code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
403 |
is thrown if the narrow fails because the object reference does not |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
404 |
support the requested type. A different system exception is raised |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
405 |
to indicate other kinds of errors. Trying to narrow a <code>null</code> will always |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
406 |
succeed with a return value of <code>null</code>. |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
407 |
Generally, the only helper method an application programmer uses is |
4 | 408 |
the <code>narrow</code> method. The other methods are normally used behind |
409 |
the scenes and are transparent to the programmer. |
|
410 |
||
411 |
<P>Helper classes |
|
412 |
fall into two broad categories, <a href="#value">helpers for value types</a> and |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
413 |
<a href="#basic">helpers for non value types</a>. Because all of the helper |
4 | 414 |
classes in one category |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
415 |
provide the same methods, one generic explanation of each |
4 | 416 |
category of helper classes is presented here. |
417 |
||
418 |
<P> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
419 |
When OMG IDL is mapped to the Java programming language, |
4 | 420 |
a "helper" class is generated for each user-defined type. |
421 |
This generated class will have the name of the user-defined type with |
|
422 |
the suffix <code>Helper</code> appended. For example, if the |
|
423 |
interface <code>Account</code> is defined in OMG IDL, the |
|
424 |
<code>idlj</code> compiler will automatically generate a class named |
|
425 |
<code>AccountHelper</code>. The <code>AccountHelper</code> class |
|
426 |
will contain the static methods needed for manipulating instances of the type, |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
427 |
in this case, <code>Account</code> objects. |
4 | 428 |
|
429 |
||
430 |
<a name="narrow"></a> |
|
431 |
<h3>The <code>narrow</code> Method</h3> |
|
432 |
When an object is the return value for a method, it is returned in the |
|
433 |
form of a generic object, either an <code>org.omg.CORBA.Object</code> object |
|
434 |
or a <code>java.lang.Object</code> object. This object must be cast to its |
|
435 |
more specific type before it can be operated on. For example, an |
|
436 |
<code>Account</code> object will be returned as a generic object and must |
|
437 |
be narrowed to an <code>Account</code> object so that <code>Account</code> |
|
438 |
methods may be called on it. |
|
439 |
<P> |
|
440 |
The <code>narrow</code> method has two forms, one that takes an |
|
441 |
<code>org.omg.CORBA.Object</code> object and one that takes a |
|
442 |
<code>java.lang.Object</code> object. Whether the interface is abstract or |
|
443 |
not determines which <code>narrow</code> method its helper class will provide. |
|
444 |
The helper class for an interface |
|
445 |
that is not abstract will have a <code>narrow</code> method that takes a CORBA |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
446 |
object, whereas the <code>narrow</code> method for an interface that is abstract |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
447 |
will take an object in the Java programming language. The helper class for a |
4 | 448 |
non-abstract interface that has at least one abstract base interface will provide |
449 |
both versions of the <code>narrow</code> method. |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
450 |
<P>The <A HREF="{@docRoot}/../technotes/guides/idl/jidlExample.html"><em>Hello World</em></A> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
451 |
tutorial uses a <code>narrow</code> method that looks like this: |
4 | 452 |
<PRE> |
453 |
// create and initialize the ORB |
|
29827 | 454 |
ORB orb = ORB.init(args, null); |
4 | 455 |
|
456 |
// get the root naming context |
|
457 |
org.omg.CORBA.Object objRef = |
|
29827 | 458 |
orb.resolve_initial_references("NameService"); |
4 | 459 |
// Use NamingContextExt instead of NamingContext. This is |
460 |
// part of latest Inter-Operable naming Service. |
|
461 |
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); |
|
462 |
||
463 |
// resolve the Object Reference in Naming |
|
464 |
String name = "Hello"; |
|
465 |
helloImpl = HelloHelper.narrow(ncRef.resolve_str(name)); |
|
466 |
</PRE> |
|
467 |
||
468 |
<a name="basic"></a> |
|
469 |
<h3>Example of a Basic Helper Class</h3> |
|
470 |
A basic helper class, for purposes of this explanation, is one with |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
471 |
the methods that are provided by every helper class, plus a <code>narrow</code> |
4 | 472 |
method if the type defined in OMG IDL maps to an interface in the Java |
473 |
programming language. Types that are not value types will have a basic |
|
474 |
helper class generated for them. |
|
475 |
<P> |
|
476 |
For example, assuming that the interface <code>Account</code> is not a |
|
477 |
value type IDL type and is also not an abstract interface and has no |
|
478 |
abstract base interfaces, its <code>AccountHelper</code> class will look |
|
479 |
like this: |
|
480 |
<PRE> |
|
481 |
abstract public class AccountHelper |
|
482 |
{ |
|
483 |
private static String _id = "IDL:Account:1.0"; |
|
484 |
||
485 |
// inserts an Account object into an Any object |
|
486 |
public static void insert (org.omg.CORBA.Any a, Account that) |
|
487 |
{ |
|
488 |
org.omg.CORBA.portable.OutputStream out = a.create_output_stream (); |
|
489 |
a.type (type ()); |
|
490 |
write (out, that); |
|
491 |
a.read_value (out.create_input_stream (), type ()); |
|
492 |
} |
|
493 |
||
494 |
// extracts an Account object from an Any object |
|
495 |
public static Account extract (org.omg.CORBA.Any a) |
|
496 |
{ |
|
497 |
return read (a.create_input_stream ()); |
|
498 |
} |
|
499 |
||
500 |
||
501 |
private static org.omg.CORBA.TypeCode __typeCode = null; |
|
502 |
// gets the typecode for this type |
|
503 |
synchronized public static org.omg.CORBA.TypeCode type () |
|
504 |
{ |
|
505 |
if (__typeCode == null) |
|
506 |
{ |
|
507 |
__typeCode = org.omg.CORBA.ORB.init ().create_interface_tc (AccountHelper.id (), "Account"); |
|
508 |
} |
|
509 |
return __typeCode; |
|
510 |
} |
|
511 |
||
512 |
// gets the repository id for this type |
|
513 |
public static String id () |
|
514 |
{ |
|
515 |
return _id; |
|
516 |
} |
|
517 |
||
518 |
// reads an Account object from an input stream |
|
519 |
public static Account read (org.omg.CORBA.portable.InputStream istream) |
|
520 |
{ |
|
521 |
return narrow (istream.read_Object (_AccountStub.class)); |
|
522 |
} |
|
523 |
||
524 |
// writes an Account object to an outputstream |
|
525 |
public static void write (org.omg.CORBA.portable.OutputStream ostream, Account value) |
|
526 |
{ |
|
527 |
ostream.write_Object ((org.omg.CORBA.Object) value); |
|
528 |
} |
|
529 |
||
530 |
// converts (narrows) an Object to an Account object |
|
531 |
public static Account narrow (org.omg.CORBA.Object obj) |
|
532 |
{ |
|
533 |
if (obj == null) |
|
534 |
return null; |
|
535 |
else if (obj instanceof Account) |
|
536 |
return (Account)obj; |
|
537 |
else if (!obj._is_a (id ())) |
|
538 |
throw new org.omg.CORBA.BAD_PARAM (); |
|
539 |
else |
|
540 |
{ |
|
541 |
org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate (); |
|
542 |
_AccountStub stub = new _AccountStub (); |
|
543 |
stub._set_delegate(delegate); |
|
544 |
return stub; |
|
545 |
} |
|
546 |
} |
|
547 |
||
548 |
} |
|
549 |
</PRE> |
|
550 |
||
551 |
<h3>Value Type Helper Classes</h3> |
|
552 |
A helper class for a value type includes different renderings of |
|
553 |
the same methods generated for non-value type methods. The main difference |
|
554 |
is that value types are types that can be |
|
555 |
passed by value as parameters or return values of a method, which means that |
|
556 |
they must be serializable. |
|
557 |
<P>Assuming that <code>Address</code> is a value type, the |
|
558 |
<code>AddressHelper</code> class will look like this: |
|
559 |
<pre> |
|
560 |
abstract public class AddressHelper |
|
561 |
{ |
|
562 |
private static String _id = "IDL:Address:1.0"; |
|
563 |
||
564 |
// same as for non-value type |
|
565 |
public static void insert (org.omg.CORBA.Any a, Address that) |
|
566 |
{ |
|
567 |
org.omg.CORBA.portable.OutputStream out = a.create_output_stream (); |
|
568 |
a.type (type ()); |
|
569 |
write (out, that); |
|
570 |
a.read_value (out.create_input_stream (), type ()); |
|
571 |
} |
|
572 |
||
573 |
// same as for non-value type |
|
574 |
public static Address extract (org.omg.CORBA.Any a) |
|
575 |
{ |
|
576 |
return read (a.create_input_stream ()); |
|
577 |
} |
|
578 |
||
579 |
private static org.omg.CORBA.TypeCode __typeCode = null; |
|
580 |
private static boolean __active = false; |
|
581 |
||
582 |
// getting the typecode for the type |
|
583 |
synchronized public static org.omg.CORBA.TypeCode type () |
|
584 |
{ |
|
585 |
if (__typeCode == null) |
|
586 |
{ |
|
587 |
synchronized (org.omg.CORBA.TypeCode.class) |
|
588 |
{ |
|
589 |
if (__typeCode == null) |
|
590 |
{ |
|
591 |
if (__active) |
|
592 |
{ |
|
593 |
return org.omg.CORBA.ORB.init().create_recursive_tc ( _id ); |
|
594 |
} |
|
595 |
__active = true; |
|
596 |
org.omg.CORBA.ValueMember[] _members0 = new org.omg.CORBA.ValueMember[0]; |
|
597 |
org.omg.CORBA.TypeCode _tcOf_members0 = null; |
|
598 |
__typeCode = org.omg.CORBA.ORB.init ().create_value_tc (_id, "Address", org.omg.CORBA.VM_NONE.value, null, _members0); |
|
599 |
__active = false; |
|
600 |
} |
|
601 |
} |
|
602 |
} |
|
603 |
return __typeCode; |
|
604 |
} |
|
605 |
||
606 |
// same as for non-value type |
|
607 |
public static String id () |
|
608 |
{ |
|
609 |
return _id; |
|
610 |
} |
|
611 |
||
612 |
// reads a serializable instance of Address from the given input stream |
|
613 |
public static Address read (org.omg.CORBA.portable.InputStream istream) |
|
614 |
{ |
|
615 |
return (Address)((org.omg.CORBA_2_3.portable.InputStream) istream).read_value (id ()); |
|
616 |
} |
|
617 |
||
618 |
// writes a serializable instance of Address to the given output stream |
|
619 |
public static void write (org.omg.CORBA.portable.OutputStream ostream, Address value) |
|
620 |
{ |
|
621 |
((org.omg.CORBA_2_3.portable.OutputStream) ostream).write_value (value, id ()); |
|
622 |
} |
|
623 |
||
624 |
||
625 |
} |
|
626 |
</pre> |
|
627 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
628 |
<P>The Helper classes defined in the package <code>org.omg.CORBA</code> are: |
4 | 629 |
<PRE><code> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
630 |
AnySeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
631 |
BooleanSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
632 |
CharSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
633 |
CompletionStatusHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
634 |
CurrentHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
635 |
DefinitionKindHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
636 |
DoubleSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
637 |
FieldNameHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
638 |
FloatSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
639 |
IdentifierHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
640 |
IDLTypeHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
641 |
LongLongSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
642 |
LongSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
643 |
NameValuePairHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
644 |
ObjectHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
645 |
OctetSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
646 |
ParameterModeHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
647 |
PolicyErrorCodeHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
648 |
PolicyErrorHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
649 |
PolicyHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
650 |
PolicyListHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
651 |
PolicyTypeHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
652 |
RepositoryIdHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
653 |
ServiceDetailHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
654 |
ServiceInformationHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
655 |
SetOverrideTypeHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
656 |
ShortSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
657 |
StringSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
658 |
StringValueHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
659 |
StructMemberHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
660 |
ULongLongSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
661 |
ULongSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
662 |
UnionMemberHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
663 |
UnknownUserExceptionHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
664 |
UShortSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
665 |
ValueBaseHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
666 |
ValueMemberHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
667 |
VersionSpecHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
668 |
VisibilityHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
669 |
WCharSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
670 |
WrongTransactionHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
671 |
WStringSeqHelper |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
672 |
WStringValueHelper |
4 | 673 |
</code></PRE> |
674 |
<a name="adv"></a> |
|
675 |
<H1> |
|
676 |
Other Classes</H1> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
677 |
The other classes and interfaces in the <code>CORBA</code> package, which are |
4 | 678 |
used behind the scenes, can be put into four groups. Three of the groups |
679 |
are used with requests in some capacity, and the fourth group, concerning |
|
680 |
the Interface Repository, is a category by itself. |
|
681 |
<H2> |
|
682 |
Classes Created by an ORB</H2> |
|
683 |
The first group contains classes that are created by an ORB and contain |
|
684 |
information used in request operations. |
|
685 |
<UL> |
|
686 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
687 |
<code>TCKind</code> -- indicates the kind (datatype) for a <code>TypeCode</code> |
4 | 688 |
object |
689 |
||
690 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
691 |
<code>TypeCode</code> -- indicates a datatype and possibly other information |
4 | 692 |
|
693 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
694 |
<code>Any</code> -- contains a value and its typecode |
4 | 695 |
|
696 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
697 |
<code>NamedValue</code> -- contains a name, an <code>Any</code> object, and an |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
698 |
argument mode flag. <code>NamedValue</code> objects contain information about |
4 | 699 |
method arguments, method return values, or a context. |
700 |
||
701 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
702 |
<code>ContextList</code> -- a list of strings that describe the contexts that |
4 | 703 |
need to be resolved and sent with an invocation |
704 |
||
705 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
706 |
<code>ExceptionList</code> -- a list of <code>TypeCode</code>s for exceptions that |
4 | 707 |
may be thrown by a method |
708 |
||
709 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
710 |
<code>Environment</code> -- a container for the exception thrown during a method |
4 | 711 |
invocation |
712 |
||
713 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
714 |
<code>Context</code> -- a list of <code>NamedValue</code> objects used to pass |
4 | 715 |
auxiliary information from client to server |
716 |
||
717 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
718 |
<code>NVList</code> -- a list of <code>NamedValue</code> objects, used to pass |
4 | 719 |
arguments or get results |
720 |
</UL> |
|
721 |
||
722 |
<H2> |
|
723 |
Classes That Deal with Requests</H2> |
|
724 |
The second group of classes deals with requests: |
|
725 |
<UL> |
|
726 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
727 |
<code>Object</code> -- the base class for all CORBA object references |
4 | 728 |
|
729 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
730 |
<code>Request</code> -- the main class in the DII, which contains methods for |
4 | 731 |
adding arguments to the request, for accessing information about the method |
732 |
being invoked (the method name, its arguments, exceptions it throws, and |
|
733 |
so on), and for making invocations on the request |
|
734 |
||
735 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
736 |
<code>DynamicImplementation</code> -- the base class for server implementations |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
737 |
using the DSI. It has the method <code>invoke</code>, which is used by an |
4 | 738 |
implementation |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
739 |
of this class to determine the state of a <code>ServerRequest</code> object |
4 | 740 |
and to set its result or exception |
741 |
||
742 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
743 |
<code>ServerRequest</code> -- captures the explicit state of a request for |
4 | 744 |
the Dynamic Skeleton Interface |
745 |
</UL> |
|
746 |
||
747 |
<H2> |
|
748 |
Interfaces That Serve as Constants</H2> |
|
749 |
The third group contains interfaces that serve as constants. The IDL-to-Java |
|
750 |
mapping mandates that IDL enums are mapped to a Java class with the enumerated |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
751 |
values represented as public static final fields in that class (e.g. |
4 | 752 |
DefinitionKind). |
753 |
On the other hand IDL constants defined outside of an IDL interface are |
|
754 |
mapped to a Java interface for each constant. |
|
755 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
756 |
<P>This is why several interfaces in the <code>org.omg.CORBA</code> package |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
757 |
consist of a single field, <code>value</code>, which is a <code>short</code>. This |
4 | 758 |
field is a constant used for such things as an error code or value modifier. |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
759 |
For example, the <code>value</code> field of the interface <code>BAD_POLICY</code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
760 |
is one of the possible reasons for the exception <code>PolicyError</code> to |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
761 |
be thrown. To specify this error code, you would use <code>BAD_POLICY.value</code>. |
4 | 762 |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
763 |
<P>The exception <code>PolicyError</code> uses the <code>value</code> field of |
4 | 764 |
the following interfaces as its possible error codes. |
765 |
<UL> |
|
766 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
767 |
<code>BAD_POLICY</code> |
4 | 768 |
|
769 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
770 |
<code>BAD_POLICY_TYPE</code> |
4 | 771 |
|
772 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
773 |
<code>BAD_POLICY_VALUE</code> |
4 | 774 |
|
775 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
776 |
<code>UNSUPPORTED_POLICY</code> |
4 | 777 |
|
778 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
779 |
<code>UNSUPPORTED_POLICY_VALUE</code> |
4 | 780 |
</UL> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
781 |
The method <code>TypeCode.type_modifier</code> returns the <code>value</code> field |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
782 |
of one of the following interfaces. The <code>VM</code> in the names of these |
4 | 783 |
interfaces stands for "value modifier." |
784 |
<UL> |
|
785 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
786 |
<code>VM_NONE</code> |
4 | 787 |
|
788 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
789 |
<code>VM_ABSTRACT</code> |
4 | 790 |
|
791 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
792 |
<code>VM_CUSTOM</code> |
4 | 793 |
|
794 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
795 |
<code>VM_TRUNCATABLE</code> |
4 | 796 |
</UL> |
797 |
The following constants are returned by a <code>ValueMember</code> object's |
|
798 |
access method to denote the visibility of the <code>ValueMember</code> object. |
|
799 |
<UL> |
|
800 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
801 |
<code>PRIVATE_MEMBER</code> |
4 | 802 |
|
803 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
804 |
<code>PUBLIC_MEMBER</code> |
4 | 805 |
</UL> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
806 |
These flags, used in <code>NamedValue</code> objects or as parameters to methods, |
4 | 807 |
are defined in the following interfaces: |
808 |
<UL> |
|
809 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
810 |
<code>ARG_IN</code> |
4 | 811 |
|
812 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
813 |
<code>ARG_INOUT</code> |
4 | 814 |
|
815 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
816 |
<code>ARG_OUT</code> |
4 | 817 |
|
818 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
819 |
<code>CTX_RESTRICT_SCOPE</code> |
4 | 820 |
</UL> |
821 |
||
822 |
<H2> |
|
823 |
Interface Repository Interfaces and Classes</H2> |
|
824 |
A fourth group contains the Interface Repository interfaces and classes, |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
825 |
which are generated by the <code>idlj</code> compiler from the OMG IDL |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
826 |
interface <code>ir.idl</code>. The purpose of the Interface Repository is to |
4 | 827 |
identify the interfaces stored in it so that they can be accessed by an |
828 |
ORB. Each module, type, interface, attribute, operation, parameter, exception, |
|
829 |
constant, and so on is described completely by the Interface Repository |
|
830 |
API. |
|
831 |
||
832 |
<P>An ORB does not require that there be an interface repository, and Java |
|
833 |
IDL does not include one. Even though this release does not include an |
|
834 |
implementation of an interface repository, the following IR classes and |
|
835 |
interfaces have been included for the purpose of creating typecodes (see |
|
836 |
create_value_tc, create_struct_tc, create_union_tc and create_exception_tc |
|
837 |
methods in interface org.omg.CORBA.ORB): |
|
29827 | 838 |
<BR> |
4 | 839 |
<UL> |
840 |
<LI> |
|
841 |
IRObject |
|
842 |
||
843 |
<LI> |
|
844 |
IDLType |
|
845 |
||
846 |
<LI> |
|
847 |
DefinitionKind |
|
848 |
||
849 |
<LI> |
|
850 |
StructMember |
|
851 |
||
852 |
<LI> |
|
853 |
UnionMember |
|
854 |
||
855 |
<LI> |
|
856 |
ValueMember |
|
857 |
</UL> |
|
858 |
<!-- End Page Data --> |
|
859 |
<HR> |
|
860 |
<H1> |
|
861 |
Related Documentation</H1> |
|
862 |
For overviews, guides, and a tutorial, please see: |
|
863 |
<UL> |
|
864 |
<LI> |
|
865 |
<A HREF="{@docRoot}/../technotes/guides/idl/index.html">Java IDL home page</A> |
|
866 |
</UL> |
|
867 |
||
868 |
||
869 |
||
870 |
||
871 |
<P><A NAME="unimpl"></A> |
|
872 |
<H1> |
|
873 |
CORBA Features Not Implemented in Java IDL</H1> |
|
874 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
875 |
<P>Some of the API included in <code>org.omg</code> subpackages is provided for |
4 | 876 |
conformance with the current OMG CORBA specification but is not implemented |
877 |
in Sun's release of the JDK<SUP><FONT SIZE=-2>TM</FONT></SUP>. This enables |
|
878 |
other JDK licensees to provide implementations of this API in standard |
|
879 |
extensions and products. |
|
880 |
||
881 |
<P><A NAME="NO_IMPLEMENT"></A> |
|
882 |
<h2>Features That Throw NO_IMPLEMENT</h2> |
|
883 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
884 |
<P>Some of the API included in <code>org.omg</code> subpackages throw |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
885 |
<code>NO_IMPLEMENT</code> exceptions for various reasons. Among these reasons |
4 | 886 |
are: |
29827 | 887 |
<UL> |
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
888 |
<LI>In some cases, for example <code>LocalObject</code>, the complete |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
889 |
implementation according to the specification indicates that |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
890 |
these API should throw <code>NO_IMPLEMENT</code>. |
29827 | 891 |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
892 |
<LI>In most cases, for example methods in <code>ORB.java</code>, |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
893 |
methods that throw |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
894 |
<code>NO_IMPLEMENT</code> are actually implemented in subclasses |
29827 | 895 |
elsewhere in the ORB code. |
896 |
||
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
897 |
<LI>In some cases, for example <code>_get_interface_def()</code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
898 |
and <code>_get_interface</code>, API are really not yet implemented. |
29827 | 899 |
</UL> |
4 | 900 |
|
901 |
||
902 |
||
903 |
||
904 |
<H2> |
|
905 |
General Summary of Features or API Not Implemented in This Release:</H2> |
|
906 |
||
907 |
<UL> |
|
908 |
<LI> |
|
909 |
Interface Repository. An Interface Repository is not required for normal |
|
910 |
operation of Java IDL. |
|
911 |
||
912 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
913 |
Java IDL does not support <code>long double</code>. |
4 | 914 |
|
915 |
||
916 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
917 |
Policies (<code><a href="Policy.html">org.omg.CORBA.Policy</a></code>) |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
918 |
and methods for getting them are not implemented. |
4 | 919 |
|
920 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
921 |
Domain managers (<code><a href="DomainManager.html">org.omg.CORBA.DomainManager</a></code>) and methods for |
4 | 922 |
getting them are not implemented. |
923 |
||
924 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
925 |
Service Information <code><a href="ServiceInformation.html">org.omg.CORBA.ServiceInformation</a></code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
926 |
and ORB method |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
927 |
<code>public boolean get_service_information(short service_type, ServiceInformationHolder service_info)</code> |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
928 |
are not implemented. |
4 | 929 |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
930 |
<LI>ORB methods for supporting single-threading |
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
931 |
(<code>perform_work</code>, <code>work_pending</code>) are not implemented. |
4 | 932 |
|
933 |
<LI>IDL contexts. |
|
934 |
</UL> |
|
935 |
||
936 |
<HR> |
|
937 |
<H2> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
938 |
Specific List of Unimplemented Features in Package <code>org.omg.CORBA</code></H2> |
4 | 939 |
|
940 |
||
941 |
<H3> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
942 |
Unimplemented Methods in package <code>org.omg.CORBA</code>:</H3> |
4 | 943 |
|
944 |
<UL> |
|
945 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
946 |
<code>ORB</code> |
4 | 947 |
|
948 |
<UL> |
|
949 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
950 |
<code>public org.omg.CORBA.Policy create_policy(int type, org.omg.CORBA.Any val)</code> |
4 | 951 |
|
952 |
||
953 |
||
954 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
955 |
<code>public void perform_work()</code> |
4 | 956 |
|
957 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
958 |
<code>public boolean work_pending()</code> |
4 | 959 |
|
960 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
961 |
<code>public org.omg.CORBA.Current get_current()</code> |
4 | 962 |
|
963 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
964 |
<code>create_operation_list</code> |
4 | 965 |
|
966 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
967 |
<code>get_default_context</code> |
4 | 968 |
|
969 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
970 |
<code>get_service_information</code> |
4 | 971 |
|
972 |
<LI> |
|
32688
936c391804a5
8133650: replace some <tt> tags (obsolete in html5) in CORBA docs
avstepan
parents:
29827
diff
changeset
|
973 |
obsolete <code>DynAnys</code> (deprecated in favor of <code>DynamicAny</code> package) |
4 | 974 |
|
975 |
||
976 |
</UL> |
|
977 |
||
978 |
||
979 |
||
980 |
</UL> |
|
981 |
@since JDK1.2 |
|
982 |
@serial exclude |
|
983 |
</BODY> |
|
984 |
</HTML> |