|
JavaTM 2 Platform Standard Edition |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.omg.CORBA.ORB
A class providing APIs for the CORBA Object Request Broker
features. The ORB
class also provides
"pluggable ORB implementation" APIs that allow another vendor's ORB
implementation to be used.
An ORB makes it possible for CORBA objects to communicate with each other by connecting objects making requests (clients) with objects servicing requests (servers).
The ORB
class, which
encapsulates generic CORBA functionality, does the following:
(Note that items 5 and 6, which include most of the methods in
the class ORB
, are typically used with the Dynamic Invocation
Interface
(DII) and the Dynamic Skeleton Interface
(DSI).
These interfaces may be used by a developer directly, but
most commonly they are used by the ORB internally and are
not seen by the general programmer.)
resolve_initial_references
TypeCode
Any
NamedValue
Context
Environment
NVList
) containing these objects
The ORB
class can be used to obtain references to objects
implemented anywhere on the network.
An application or applet gains access to the CORBA environment
by initializing itself into an ORB
using one of
three init
methods. Two of the three methods use the properties
(associations of a name with a value) shown in the
table below.
Property Name | Property Value |
---|---|
org.omg.CORBA.ORBClass | class name of an ORB implementation |
org.omg.CORBA.ORBSingletonClass | class name of the ORB returned by init() |
These properties allow a different vendor's ORB
implementation to be "plugged in."
When an ORB instance is being created, the class name of the ORB implementation is located using the following standard search order:
Note that Java IDL provides a default implementation for the
fully-functional ORB and for the Singleton ORB. When the method
init
is given no parameters, the default Singleton
ORB is returned. When the method init
is given parameters
but no ORB class is specified, the Java IDL ORB implementation
is returned.
The following code fragment creates an ORB
object
initialized with the default ORB Singleton.
This ORB has a
restricted implementation to prevent malicious applets from doing
anything beyond creating typecodes.
It is called a singleton
because there is only one instance for an entire virtual machine.
ORB orb = ORB.init();
The following code fragment creates an ORB
object
for an application. The parameter args
represents the arguments supplied to the application's main
method. Since the property specifies the ORB class to be
"SomeORBImplementation", the new ORB will be initialized with
that ORB implementation. If p had been null,
and the arguments had not specified an ORB class,
the new ORB would have been
initialized with the default Java IDL implementation.
Properties p = new Properties(); p.put("org.omg.CORBA.ORBClass", "SomeORBImplementation"); ORB orb = ORB.init(args, p);
The following code fragment creates an ORB
object
for the applet supplied as the first parameter. If the given
applet does not specify an ORB class, the new ORB will be
initialized with the default Java IDL implementation.
ORB orb = ORB.init(myApplet, null);
An application or applet can be initialized in one or more ORBs. ORB initialization is a bootstrap call into the CORBA world.
Constructor Summary | |
ORB()
|
Method Summary | |
void |
connect(Object obj)
Connects the given servant object (a Java object that is an instance of the server implementation class) to the ORB. |
TypeCode |
create_abstract_interface_tc(String id,
String name)
Create a TypeCode object for an IDL abstract interface. |
abstract TypeCode |
create_alias_tc(String id,
String name,
TypeCode original_type)
Creates a TypeCode object representing an IDL alias
(typedef ). |
abstract Any |
create_any()
Creates an IDL Any object initialized to
contain a Typecode object whose kind field
is set to TCKind.tc_null . |
abstract TypeCode |
create_array_tc(int length,
TypeCode element_type)
Creates a TypeCode object representing an IDL array . |
DynAny |
create_basic_dyn_any(TypeCode type)
|
abstract ContextList |
create_context_list()
Creates an empty ContextList object. |
DynAny |
create_dyn_any(Any value)
|
DynArray |
create_dyn_array(TypeCode type)
|
DynEnum |
create_dyn_enum(TypeCode type)
|
DynSequence |
create_dyn_sequence(TypeCode type)
|
DynStruct |
create_dyn_struct(TypeCode type)
|
DynUnion |
create_dyn_union(TypeCode type)
|
abstract TypeCode |
create_enum_tc(String id,
String name,
String[] members)
Creates a TypeCode object representing an IDL enum . |
abstract Environment |
create_environment()
Creates an Environment object. |
abstract ExceptionList |
create_exception_list()
Creates an empty ExceptionList object. |
abstract TypeCode |
create_exception_tc(String id,
String name,
StructMember[] members)
Creates a TypeCode object representing an IDL exception . |
TypeCode |
create_fixed_tc(short digits,
short scale)
Create a TypeCode object for an IDL fixed type. |
abstract TypeCode |
create_interface_tc(String id,
String name)
Creates a TypeCode object representing an IDL interface . |
abstract NVList |
create_list(int count)
Allocates an NVList with (probably) enough
space for the specified number of NamedValue objects. |
abstract NamedValue |
create_named_value(String s,
Any any,
int flags)
Creates a NamedValue object
using the given name, value, and argument mode flags. |
TypeCode |
create_native_tc(String id,
String name)
Create a TypeCode object for an IDL native type. |
NVList |
create_operation_list(Object oper)
Creates an NVList initialized with argument
descriptions for the operation described in the given
OperationDef object. |
abstract OutputStream |
create_output_stream()
Creates a new org.omg.CORBA.portable.OutputStream into which
IDL method parameters can be marshalled during method invocation. |
Policy |
create_policy(int type,
Any val)
|
abstract TypeCode |
create_recursive_sequence_tc(int bound,
int offset)
Deprecated. |
TypeCode |
create_recursive_tc(String id)
Create a recursive TypeCode object which
serves as a placeholder for a concrete TypeCode during the process of creating
TypeCodes which contain recursion. |
abstract TypeCode |
create_sequence_tc(int bound,
TypeCode element_type)
Creates a TypeCode object representing an IDL sequence . |
abstract TypeCode |
create_string_tc(int bound)
Creates a TypeCode object representing a bounded IDL
string . |
abstract TypeCode |
create_struct_tc(String id,
String name,
StructMember[] members)
Creates a TypeCode object representing an IDL struct . |
abstract TypeCode |
create_union_tc(String id,
String name,
TypeCode discriminator_type,
UnionMember[] members)
Creates a TypeCode object representing an IDL union . |
TypeCode |
create_value_box_tc(String id,
String name,
TypeCode boxed_type)
Create a TypeCode object for an IDL value type. |
TypeCode |
create_value_tc(String id,
String name,
short type_modifier,
TypeCode concrete_base,
ValueMember[] members)
Create a TypeCode object for an IDL value type. |
abstract TypeCode |
create_wstring_tc(int bound)
Creates a TypeCode object representing a bounded IDL
wstring (wide string). |
void |
disconnect(Object obj)
Disconnects the given servant object from the ORB. |
Current |
get_current()
Deprecated. use resolve_initial_references. |
abstract Context |
get_default_context()
Gets the default Context object. |
abstract Request |
get_next_response()
Gets the next Request instance for which a response
has been received. |
abstract TypeCode |
get_primitive_tc(TCKind tcKind)
Retrieves the TypeCode object that represents
the given primitive IDL type. |
boolean |
get_service_information(short service_type,
ServiceInformationHolder service_info)
|
static ORB |
init()
Returns the ORB singleton object. |
static ORB |
init(Applet app,
Properties props)
Creates a new ORB instance for an applet. |
static ORB |
init(String[] args,
Properties props)
Creates a new ORB instance for a standalone
application. |
abstract String[] |
list_initial_services()
Returns a list of the initially available CORBA object references, such as "NameService" and "InterfaceRepository". |
abstract String |
object_to_string(Object obj)
Converts the given CORBA object reference to a string. |
void |
perform_work()
Performs an implementation-dependent unit of work if called by the main thread. |
abstract boolean |
poll_next_response()
Finds out if any of the deferred (asynchronous) invocations have a response yet. |
abstract Object |
resolve_initial_references(String object_name)
Resolves a specific object reference from the set of available initial service names. |
void |
run()
This operation returns when the ORB has shutdown. |
abstract void |
send_multiple_requests_deferred(Request[] req)
Sends multiple dynamic (DII) requests asynchronously. |
abstract void |
send_multiple_requests_oneway(Request[] req)
Sends multiple dynamic (DII) requests asynchronously without expecting any responses. |
protected abstract void |
set_parameters(Applet app,
Properties props)
Allows the ORB implementation to be initialized with the given applet and parameters. |
protected abstract void |
set_parameters(String[] args,
Properties props)
Allows the ORB implementation to be initialized with the given parameters and properties. |
void |
shutdown(boolean wait_for_completion)
Instructs the ORB to shut down, which causes all object adapters to shut down. |
abstract Object |
string_to_object(String str)
Converts a string produced by the method object_to_string
back to a CORBA object reference. |
boolean |
work_pending()
Returns true if the ORB needs the main thread to
perform some work, and false if the ORB does not
need the main thread. |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
Constructor Detail |
public ORB()
Method Detail |
public static ORB init()
ORB
singleton object. This method always returns the
same ORB instance, which is an instance of the class described by the
org.omg.CORBA.ORBSingletonClass
system property.
This no-argument version of the method init
is used primarily
as a factory for TypeCode
objects, which are used by
Helper
classes to implement the method type
.
It is also used to create Any
objects that are used to
describe union
labels (as part of creating a
TypeCode
object for a union
).
This method is not intended to be used by applets, and in the event
that it is called in an applet environment, the ORB it returns
is restricted so that it can be used only as a factory for
TypeCode
objects. Any TypeCode
objects
it produces can be safely shared among untrusted applets.
If an ORB is created using this method from an applet,
a system exception will be thrown if
methods other than those for
creating TypeCode
objects are invoked.
public static ORB init(String[] args, Properties props)
ORB
instance for a standalone
application. This method may be called from applications
only and returns a new fully functional ORB
object
each time it is called.args
- command-line arguments for the application's main
method; may be null
props
- application-specific properties; may be null
public static ORB init(Applet app, Properties props)
ORB
instance for an applet. This
method may be called from applets only and returns a new
fully-functional ORB
object each time it is called.app
- the applet; may be null
props
- applet-specific properties; may be null
protected abstract void set_parameters(String[] args, Properties props)
init
method to pass in its parameters.args
- command-line arguments for the application's main
method; may be null
props
- application-specific properties; may be null
protected abstract void set_parameters(Applet app, Properties props)
init
method to pass in its parameters.app
- the applet; may be null
props
- applet-specific properties; may be null
public void connect(Object obj)
ImplBase
class corresponding to the interface that is
supported by the server. The servant must thus be a CORBA object
reference, and inherit from org.omg.CORBA.Object
.
Servants created by the user can start receiving remote invocations
after the method connect
has been called. A servant may also be
automatically and implicitly connected to the ORB if it is passed as
an IDL parameter in an IDL method invocation on a non-local object,
that is, if the servant object has to be marshalled and sent outside of the
process address space.
Calling the method connect
has no effect
when the servant object is already connected to the ORB.
Deprecated by the OMG in favor of the Portable Object Adapter APIs.
obj
- the servant object referencepublic void disconnect(Object obj)
org.omg.CORBA.OBJECT_NOT_EXIST
back to the
remote client. Thus the object appears to be destroyed from the
point of view of remote clients. Note, however, that local requests issued
using the servant directly do not
pass through the ORB; hence, they will continue to be processed by the
servant.
Calling the method disconnect
has no effect
if the servant is not connected to the ORB.
Deprecated by the OMG in favor of the Portable Object Adapter APIs.
obj
- The servant object to be disconnected from the ORBpublic abstract String[] list_initial_services()
String
objects that represent
the object references for CORBA services
that are initially available with this ORBpublic abstract Object resolve_initial_references(String object_name) throws InvalidName
name
- the name of the initial service as a stringpublic abstract String object_to_string(Object obj)
The resulting String
object may be stored or communicated
in any way that a String
object can be manipulated.
obj
- the object reference to stringifypublic abstract Object string_to_object(String str)
object_to_string
back to a CORBA object reference.str
- the string to be converted back to an object reference. It must
be the result of converting an object reference to a string using the
method object_to_string
.public abstract NVList create_list(int count)
NVList
with (probably) enough
space for the specified number of NamedValue
objects.
Note that the specified size is only a hint to help with
storage allocation and does not imply the maximum size of the list.count
- suggested number of NamedValue
objects for
which to allocate spaceNVList
NVList
public NVList create_operation_list(Object oper)
NVList
initialized with argument
descriptions for the operation described in the given
OperationDef
object. This OperationDef
object
is obtained from an Interface Repository. The arguments in the
returned NVList
object are in the same order as in the
original IDL operation definition, which makes it possible for the list
to be used in dynamic invocation requests.oper
- the OperationDef
object to use to create the listNVList
object containing
descriptions of the arguments to the method described in the given
OperationDef
objectNVList
public abstract NamedValue create_named_value(String s, Any any, int flags)
NamedValue
object
using the given name, value, and argument mode flags.
A NamedValue
object serves as (1) a parameter or return
value or (2) a context property.
It may be used by itself or
as an element in an NVList
object.
s
- the name of the NamedValue
objectany
- the Any
value to be inserted into the
NamedValue
objectflags
- the argument mode flags for the NamedValue
: one of
ARG_IN.value
, ARG_OUT.value
,
or ARG_INOUT.value
.NamedValue
objectNamedValue
public abstract ExceptionList create_exception_list()
ExceptionList
object.ExceptionList
objectpublic abstract ContextList create_context_list()
ContextList
object.ContextList
objectContextList
,
Context
public abstract Context get_default_context()
Context
object.Context
objectContext
public abstract Environment create_environment()
Environment
object.Environment
objectEnvironment
public abstract OutputStream create_output_stream()
org.omg.CORBA.portable.OutputStream
into which
IDL method parameters can be marshalled during method invocation.org.omg.CORBA.portable.OutputStream
objectpublic abstract void send_multiple_requests_oneway(Request[] req)
req
- an array of request objectspublic abstract void send_multiple_requests_deferred(Request[] req)
req
- an array of Request
objectspublic abstract boolean poll_next_response()
true
if there is a response available;
false
otherwisepublic abstract Request get_next_response() throws WrongTransaction
Request
instance for which a response
has been received.Request
object ready with a responseget_next_response
is called from a transaction scope different
from the one from which the original request was sent. See the
OMG Transaction Service specification for details.public abstract TypeCode get_primitive_tc(TCKind tcKind)
TypeCode
object that represents
the given primitive IDL type.tcKind
- the TCKind
instance corresponding to the
desired primitive typeTypeCode
objectpublic abstract TypeCode create_struct_tc(String id, String name, StructMember[] members)
TypeCode
object representing an IDL struct
.
The TypeCode
object is initialized with the given id,
name, and members.id
- the repository id for the struct
name
- the name of the struct
members
- an array describing the members of the struct
TypeCode
object describing
an IDL struct
public abstract TypeCode create_union_tc(String id, String name, TypeCode discriminator_type, UnionMember[] members)
TypeCode
object representing an IDL union
.
The TypeCode
object is initialized with the given id,
name, discriminator type, and members.id
- the repository id of the union
name
- the name of the union
discriminator_type
- the type of the union
discriminatormembers
- an array describing the members of the union
TypeCode
object describing
an IDL union
public abstract TypeCode create_enum_tc(String id, String name, String[] members)
TypeCode
object representing an IDL enum
.
The TypeCode
object is initialized with the given id,
name, and members.id
- the repository id for the enum
name
- the name for the enum
members
- an array describing the members of the enum
TypeCode
object describing
an IDL enum
public abstract TypeCode create_alias_tc(String id, String name, TypeCode original_type)
TypeCode
object representing an IDL alias
(typedef
).
The TypeCode
object is initialized with the given id,
name, and original type.id
- the repository id for the aliasname
- the name for the aliasoriginal_type
- the TypeCode
object describing the original type
for which this is an aliasTypeCode
object describing
an IDL alias
public abstract TypeCode create_exception_tc(String id, String name, StructMember[] members)
TypeCode
object representing an IDL exception
.
The TypeCode
object is initialized with the given id,
name, and members.id
- the repository id for the exception
name
- the name for the exception
members
- an array describing the members of the exception
TypeCode
object describing
an IDL exception
public abstract TypeCode create_interface_tc(String id, String name)
TypeCode
object representing an IDL interface
.
The TypeCode
object is initialized with the given id
and name.id
- the repository id for the interfacename
- the name for the interfaceTypeCode
object describing
an IDL interface
public abstract TypeCode create_string_tc(int bound)
TypeCode
object representing a bounded IDL
string
.
The TypeCode
object is initialized with the given bound,
which represents the maximum length of the string. Zero indicates
that the string described by this type code is unbounded.bound
- the bound for the string
; cannot be zeroTypeCode
object describing
a bounded IDL string
public abstract TypeCode create_wstring_tc(int bound)
TypeCode
object representing a bounded IDL
wstring
(wide string).
The TypeCode
object is initialized with the given bound,
which represents the maximum length of the wide string.bound
- the bound for the wstring
; cannot be zeroTypeCode
object describing
a bounded IDL wstring
public abstract TypeCode create_sequence_tc(int bound, TypeCode element_type)
TypeCode
object representing an IDL sequence
.
The TypeCode
object is initialized with the given bound and
element type.bound
- the bound for the sequence
element_type
- the TypeCode
object describing the elements
contained in the sequence
TypeCode
object describing
an IDL sequence
public abstract TypeCode create_recursive_sequence_tc(int bound, int offset)
TypeCode
object representing a
a recursive IDL sequence
.
For the IDL struct
Foo in following code fragment,
the offset parameter for creating its sequence would be 1:
Struct Foo { long value; Sequence <Foo> Chain; };
bound
- the bound for the sequenceoffset
- the index to the enclosing TypeCode
object
that describes the elements of this sequenceTypeCode
object describing
a recursive sequencepublic abstract TypeCode create_array_tc(int length, TypeCode element_type)
TypeCode
object representing an IDL array
.
The TypeCode
object is initialized with the given length and
element type.length
- the length of the array
element_type
- a TypeCode
object describing the type
of element contained in the array
TypeCode
object describing
an IDL array
public TypeCode create_native_tc(String id, String name)
TypeCode
object for an IDL native type.id
- the logical id for the native type.name
- the name of the native type.public TypeCode create_abstract_interface_tc(String id, String name)
TypeCode
object for an IDL abstract interface.id
- the logical id for the abstract interface type.name
- the name of the abstract interface type.public TypeCode create_fixed_tc(short digits, short scale)
TypeCode
object for an IDL fixed type.digits
- specifies the total number of decimal digits in the number
and must be from 1 to 31 inclusive.scale
- specifies the position of the decimal point.public TypeCode create_value_tc(String id, String name, short type_modifier, TypeCode concrete_base, ValueMember[] members)
TypeCode
object for an IDL value type.
The concrete_base parameter is the TypeCode for the immediate
concrete valuetype base of the valuetype for which the TypeCode
is being created.
It may be null if the valuetype does not have a concrete base.id
- the logical id for the value type.name
- the name of the value type.type_modifier
- one of the value type modifier constants
VM_NONE, VM_CUSTOM, VM_ABSTRACT or VM_TRUNCATABLEconcrete_base
- a TypeCode
object
describing the concrete valuetype basepublic TypeCode create_recursive_tc(String id)
TypeCode
object which
serves as a placeholder for a concrete TypeCode during the process of creating
TypeCodes which contain recursion. The id parameter specifies the repository id of
the type for which the recursive TypeCode is serving as a placeholder. Once the
recursive TypeCode has been properly embedded in the enclosing TypeCode which
corresponds to the specified repository id, it will function as a normal TypeCode.
Invoking operations on the recursive TypeCode before it has been embedded in the
enclosing TypeCode will result in undefined behavior.
For example, the following IDL type declarations contain recursion:
Struct Foo { long value; Sequence <Foo> Chain; }; Struct Bar { public Bar member; };
To create a TypeCode for struct Bar, you would invoke the TypeCode creation operations as shown below:
String barID = "IDL:Bar:1.0"; TypeCode recursiveTC = orb.create_recursive_tc(barID); StructMember[] members = { new StructMember("member", recursiveTC, null) }; TypeCode structBarTC = orb.create_struct_tc(barID, "Bar", members);
id
- the logical id of the referenced type.public TypeCode create_value_box_tc(String id, String name, TypeCode boxed_type)
TypeCode
object for an IDL value type.
The concrete_base parameter is the TypeCode for the immediate
concrete valuetype base of the valuetype for which the TypeCode
is being created.
It may be null if the valuetype does not have a concrete base.id
- the logical id for the value type.name
- the name of the value type.public abstract Any create_any()
Any
object initialized to
contain a Typecode
object whose kind
field
is set to TCKind.tc_null
.Any
objectpublic Current get_current()
Current
object.
The Current
interface is used to manage thread-specific
information for use by services such as transactions and security.Current
objectCORBA
package
comments for unimplemented featurespublic void run()
public void shutdown(boolean wait_for_completion)
wait_for_completion
parameter
is true, this operation blocks until all ORB processing (including
processing of currently executing requests, object deactivation,
and other object adapter operations) has completed.
The ORB.run
method will return after
shutdown
has been called.public boolean work_pending()
true
if the ORB needs the main thread to
perform some work, and false
if the ORB does not
need the main thread.public void perform_work()
work_pending
and perform_work
can be used in
conjunction to implement a simple polling loop that multiplexes
the main thread among the ORB and other activities.public boolean get_service_information(short service_type, ServiceInformationHolder service_info)
public DynAny create_dyn_any(Any value)
public DynAny create_basic_dyn_any(TypeCode type) throws InconsistentTypeCode
public DynStruct create_dyn_struct(TypeCode type) throws InconsistentTypeCode
public DynSequence create_dyn_sequence(TypeCode type) throws InconsistentTypeCode
public DynArray create_dyn_array(TypeCode type) throws InconsistentTypeCode
public DynUnion create_dyn_union(TypeCode type) throws InconsistentTypeCode
public DynEnum create_dyn_enum(TypeCode type) throws InconsistentTypeCode
public Policy create_policy(int type, Any val) throws PolicyError
|
JavaTM 2 Platform Standard Edition |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |