public abstract class ORB extends Object
ORB
クラスは、ほかのベンダーのORB実装を使えるようにする「プラグイン可能なORB実装」APIも提供します。
ORBは、要求を発行する側のオブジェクト(クライアント)と要求を処理する側のオブジェクト(サーバー)を接続することによって、CORBAオブジェクト間の相互通信を可能にします。
ORB
クラスはジェネリックCORBA機能をカプセル化するもので、次のような操作を行います。項目の5と6 (ORB
クラスのほとんどのメソッドを含む)は、通常、Dynamic Invocation Interface
(DII)とDynamic Skeleton Interface
(DSI)で使用されます。これらのインタフェースは、開発者が直接使用することもできますが、通常はORBで内部的に使用されるため、一般のプログラマが見ることはありません。
resolve_initial_references
メソッドを使って、ネーム・サービスなどのサービスへの初期オブジェクト参照を取得する
TypeCode
Any
NamedValue
Context
Environment
NVList
など)
ORB
クラスを使うと、オブジェクトがネットワーク上のどこに実装されていても、その参照を取得できます。
アプリケーションやアプレットは、3つのinit
メソッドの1つを使ってそれ自体をORB
に対して初期化することにより、CORBA環境へのアクセスを取得します。3つのメソッドのうち2つは、次の表に記載されているプロパティ(名前と値との関連付け)を使用します。
プロパティ名 | プロパティ値 |
---|---|
org.omg.CORBA.ORBClass | ORB実装のクラス名 |
org.omg.CORBA.ORBSingletonClass | init() が返すORBのクラス名 |
これらのプロパティにより、さまざまなベンダーのORB
実装がプラグイン可能になります。
ORBインスタンスの生成時には、ORB実装のクラス名が次の標準検索順で検索されます。
Java IDLはフル機能のORBと単体ORBに対してデフォルト実装を提供します。init
メソッドにパラメータを指定しなかった場合は、デフォルトの単体ORBが返されます。init
メソッドにパラメータを指定した場合、ORBクラスを指定しなかったときは、Java IDL ORB実装が返されます。
次に、デフォルトの単体ORBで初期化されるORB
オブジェクトを作成するコードを示します。悪意のあるアプレットが型コードの作成以外の操作をできないように、このORBの実装は制限付きです。この実装は、仮想マシン全体でインスタンスが1つしかないので、単体(singleton)と呼ばれます。
ORB orb = ORB.init();
次に、アプリケーションのORB
オブジェクトを作成するコードを示します。args
パラメータは、アプリケーションのmain
メソッドに指定されている引数を表します。プロパティはORBクラスを「SomeORBImplementation」として指定するので、新しいORBはそのORB実装で初期化されます。pがnullでA引数がORBクラスを指定していなかった場合、新しいORBはデフォルトのJava IDL実装で初期化されます。
Properties p = new Properties(); p.put("org.omg.CORBA.ORBClass", "SomeORBImplementation"); ORB orb = ORB.init(args, p);
次に、1番目のパラメータとして指定されたアプレットのORB
オブジェクトを作成するコードを示します。指定されたアプレットがORBクラスを指定していない場合は、新しいORBはデフォルトのJava IDL実装で初期化されます。
ORB orb = ORB.init(myApplet, null);
アプリケーションやアプレットは、1つ以上のORBで初期化できます。ORBでの初期化は、CORBAの世界に対するブートストラップ呼出しです。
コンストラクタと説明 |
---|
ORB() |
修飾子と型 | メソッドと説明 |
---|---|
void |
connect(Object obj)
指定されたサーバント・オブジェクト(サーバー実装クラスのインスタンスであるJavaオブジェクト)をORBに接続します。
|
TypeCode |
create_abstract_interface_tc(String id, String name)
IDLの抽象インタフェースの
TypeCode オブジェクトを生成します。 |
abstract TypeCode |
create_alias_tc(String id, String name, TypeCode original_type)
IDLの
alias (typedef )を表すTypeCode オブジェクトを生成します。 |
abstract Any |
create_any()
kind フィールドがTCKind.tc_null に設定されたTypecode オブジェクトを格納するように初期化された、IDLのAny オブジェクトを生成します。 |
abstract TypeCode |
create_array_tc(int length, TypeCode element_type)
IDLの
array を表すTypeCode オブジェクトを生成します。 |
DynAny |
create_basic_dyn_any(TypeCode type)
非推奨。
代わりに、新しいDynAnyFactory APIを使用してください。
|
abstract ContextList |
create_context_list()
空の
ContextList オブジェクトを作成します。 |
DynAny |
create_dyn_any(Any value)
非推奨。
代わりに、新しいDynAnyFactory APIを使用してください。
|
DynArray |
create_dyn_array(TypeCode type)
非推奨。
代わりに、新しいDynAnyFactory APIを使用してください。
|
DynEnum |
create_dyn_enum(TypeCode type)
非推奨。
代わりに、新しいDynAnyFactory APIを使用してください。
|
DynSequence |
create_dyn_sequence(TypeCode type)
非推奨。
代わりに、新しいDynAnyFactory APIを使用してください。
|
DynStruct |
create_dyn_struct(TypeCode type)
非推奨。
代わりに、新しいDynAnyFactory APIを使用してください。
|
DynUnion |
create_dyn_union(TypeCode type)
非推奨。
代わりに、新しいDynAnyFactory APIを使用してください。
|
abstract TypeCode |
create_enum_tc(String id, String name, String[] members)
IDLの
enum を表すTypeCode オブジェクトを生成します。 |
abstract Environment |
create_environment()
Environment オブジェクトを作成します。 |
abstract ExceptionList |
create_exception_list()
空の
ExceptionList オブジェクトを作成します。 |
abstract TypeCode |
create_exception_tc(String id, String name, StructMember[] members)
IDLの
exception を表すTypeCode オブジェクトを生成します。 |
TypeCode |
create_fixed_tc(short digits, short scale)
IDL fixed型の
TypeCode オブジェクトを生成します。 |
abstract TypeCode |
create_interface_tc(String id, String name)
IDLの
interface を表すTypeCode オブジェクトを生成します。 |
abstract NVList |
create_list(int count)
指定数の
NamedValue オブジェクトにとって(おそらく)十分な空間をNVList に割り当てます。 |
abstract NamedValue |
create_named_value(String s, Any any, int flags)
指定された名前、値、引数モード・フラグを使って、
NamedValue オブジェクトを生成します。 |
TypeCode |
create_native_tc(String id, String name)
IDLネイティブ型の
TypeCode オブジェクトを生成します。 |
NVList |
create_operation_list(Object oper)
指定された
OperationDef オブジェクトで記述される操作の引数記述で初期化された、NVList を生成します。 |
abstract OutputStream |
create_output_stream()
新しい
org.omg.CORBA.portable.OutputStream オブジェクトを生成します。メソッド呼出し時に、このオブジェクトの内部でIDLのメソッドのパラメータを整列化できます。 |
Policy |
create_policy(int type, Any val)
指定された初期状態で特定の型のポリシー・オブジェクトのインスタンスを新規作成するために呼び出されます。
|
abstract TypeCode |
create_recursive_sequence_tc(int bound, int offset)
非推奨。
代わりにcreate_recursive_tcとcreate_sequence_tcの組み合わせを使用してください。
|
TypeCode |
create_recursive_tc(String id)
再帰を含むTypeCodeを生成する処理の際に、具象TypeCodeのプレースホルダーとして機能する再帰
TypeCode を生成します。 |
abstract TypeCode |
create_sequence_tc(int bound, TypeCode element_type)
IDLの
sequence を表すTypeCode オブジェクトを生成します。 |
abstract TypeCode |
create_string_tc(int bound)
IDLのバウンド形式
string を表すTypeCode オブジェクトを生成します。 |
abstract TypeCode |
create_struct_tc(String id, String name, StructMember[] members)
IDLの
struct を表すTypeCode オブジェクトを生成します。 |
abstract TypeCode |
create_union_tc(String id, String name, TypeCode discriminator_type, UnionMember[] members)
IDLの
union を表すTypeCode オブジェクトを生成します。 |
TypeCode |
create_value_box_tc(String id, String name, TypeCode boxed_type)
IDL値ボックスの
TypeCode オブジェクトを生成します。 |
TypeCode |
create_value_tc(String id, String name, short type_modifier, TypeCode concrete_base, ValueMember[] members)
IDL値型の
TypeCode オブジェクトを生成します。 |
abstract TypeCode |
create_wstring_tc(int bound)
IDLのバウンド形式
wstring (ワイド文字列)を表すTypeCode オブジェクトを生成します。 |
void |
destroy()
リソースを再使用できるようにORBを破棄します。
|
void |
disconnect(Object obj)
指定されたサーバント・オブジェクトをORBから切り離します。
|
Current |
get_current()
非推奨。
resolve_initial_references を使用します。 |
abstract Context |
get_default_context()
デフォルトの
Context オブジェクトを取得します。 |
abstract Request |
get_next_response()
応答を受け取った次の
Request のインスタンスを取得します。 |
abstract TypeCode |
get_primitive_tc(TCKind tcKind)
指定されたプリミティブIDL型を表す
TypeCode オブジェクトを取り出します。 |
boolean |
get_service_information(short service_type, ServiceInformationHolder service_info)
このORBがサポートするCORBAの機能とサービスに関する情報の取得に使用されます。
|
static ORB |
init()
ORB 単体オブジェクトを返します。 |
static ORB |
init(Applet app, Properties props)
アプレット用に、新しい
ORB のインスタンスを生成します。 |
static ORB |
init(String[] args, Properties props)
スタンドアロン・アプリケーション用に、新しい
ORB のインスタンスを生成します。 |
abstract String[] |
list_initial_services()
「ネーム・サービス」や「インタフェース・リポジトリ」など、使用可能なCORBA初期サービスのオブジェクト参照を返します。
|
abstract String |
object_to_string(Object obj)
指定されたCORBAオブジェクト参照を文字列に変換します。
|
void |
perform_work()
メイン・スレッドから呼び出されると、実装に依存する処理単位を実行します。
|
abstract boolean |
poll_next_response()
据え置かれた(非同期)呼出しの中に、応答のあったものがあるかどうかを判定します。
|
abstract Object |
resolve_initial_references(String object_name)
使用可能な一連の初期サービス名から、特定のオブジェクト参照を解決します。
|
void |
run()
この操作は、ORBがシャットダウン・プロセスを完了するまで現行のスレッドをブロックし、あるスレッドが
shutdown を呼び出すと起動します。 |
abstract void |
send_multiple_requests_deferred(Request[] req)
複数の動的(DII)要求を非同期的に送ります。
|
abstract void |
send_multiple_requests_oneway(Request[] req)
応答を前提とせずに、複数の動的(DII)要求を非同期的に送ります。
|
protected abstract void |
set_parameters(Applet app, Properties props)
ORB実装を、指定されたアプレットとパラメータで初期化します。
|
protected abstract void |
set_parameters(String[] args, Properties props)
ORB実装を、指定されたパラメータとプロパティで初期化します。
|
void |
shutdown(boolean wait_for_completion)
ORBにシャットダウンを指示します。これにより、破棄の準備として、すべてのオブジェクト・アダプタがシャットダウンされます。
wait_for_completion パラメータがtrueの場合、この操作はすべてのORB処理(現在実行中の要求、オブジェクトの非アクティブ化、その他のオブジェクト・アダプタの操作など)が完了するまでブロックされます。 |
abstract Object |
string_to_object(String str)
object_to_string メソッドにより生成された文字列を変換してCORBAオブジェクト参照に戻します。 |
boolean |
work_pending()
ORBが処理を実行するためにメイン・スレッドを必要とする場合は
true 、メイン・スレッドを必要としない場合はfalse を返します。 |
public static ORB init()
ORB
単体オブジェクトを返します。このメソッドは常に、同じORBのインスタンスを返します。このインスタンスは、org.omg.CORBA.ORBSingletonClass
システム・プロパティが記述するクラスのインスタンスです。
この引数なしの形式のinit
メソッドは主に、TypeCode
オブジェクトのファクトリとして使用されます。Helper
クラスはこのオブジェクトを使用して、type
メソッドを実装します。また、union
のTypeCode
オブジェクトを作成するときに、union
ラベルの記述に使用するAny
オブジェクトの作成にも使用されます。
このメソッドはアプレットで使用することは意図されていません。したがって、アプレット環境で呼び出された場合、返されるORBは制約付きであり、TypeCode
オブジェクトのファクトリとしてしか使用できません。このため、このメソッドにより作成されるTypeCode
オブジェクトはすべて、信頼できないアプレット間でも安全に共有できます。
アプレットからこのメソッドを使ってORBを作成する場合、TypeCode
オブジェクトの作成以外の目的でこのメソッドが呼び出されると、システム例外がスローされます。
public static ORB init(String[] args, Properties props)
ORB
のインスタンスを生成します。このメソッドを呼び出せるのはアプリケーションのみです。このメソッドは、呼び出されるたびに新しいフル機能のORB
オブジェクトを返します。args
- アプリケーションのmain
メソッドのコマンド行引数。null
も可props
- アプリケーション固有のプロパティ。null
も可public static ORB init(Applet app, Properties props)
ORB
のインスタンスを生成します。このメソッドを呼び出せるのはアプレットのみです。このメソッドは、呼び出されるたびに新しいフル機能のORB
オブジェクトを返します。app
- アプレット。null
も可props
- アプレット固有のプロパティ。null
も可protected abstract void set_parameters(String[] args, Properties props)
init
メソッドで呼び出されると、パラメータを渡します。args
- アプリケーションのmain
メソッドのコマンド行引数。null
も可props
- アプリケーション固有のプロパティ。null
も可protected abstract void set_parameters(Applet app, Properties props)
init
メソッドで呼び出されると、パラメータを渡します。app
- アプレット。null
も可props
- アプレット固有のプロパティ。null
も可public void connect(Object obj)
ImplBase
クラスを拡張する必要があります。このため、サーバントはCORBAオブジェクト参照であって、org.omg.CORBA.Object
から継承する必要があります。ユーザーが作成したサーバントは、connect
メソッドの呼出し後に、リモート呼出しを受け取ることができるようになります。ローカルでないオブジェクトのIDLメソッド呼出しでIDLのパラメータとしてサーバントが渡された場合、つまりサーバント・オブジェクトを整列化し、プロセス・アドレス空間の範囲外に送る必要がある場合は、サーバントを自動的かつ暗黙的にORBに接続することもできます。
サーバント・オブジェクトがすでにORBに接続されているときは、connect
メソッドを呼び出しても何も変化はありません。
Portable Object Adapter APIを優先するので、OMGでは非推奨です。
obj
- サーバント・オブジェクト参照public void destroy()
OBJECT_NOT_EXIST
例外がスローされます。ORBが破棄されたあと、同じORBidを使用してinit
を呼び出すと新たに構築されたORBへの参照が返されます。
シャットダウンされていないORBでdestroy
が呼び出されると、シャットダウン・プロセスが起動し、ORBがシャットダウンするまでブロックしてから、ORBを破棄します。
現在呼出しを処理しているスレッドでアプリケーションがdestroy
を呼び出すと、ブロックによりデッドロックとなるため、OMGマイナー・コード3でBAD_INV_ORDER
システム例外がスローされます。
最大限の移植性を確保し、リソース・リークを防ぐため、アプリケーションは終了前にすべてのORBインスタンスでshutdown
とdestroy
を必ず呼び出す必要があります。
BAD_INV_ORDER
- 現在のスレッドが呼出しを処理している場合public void disconnect(Object obj)
org.omg.CORBA.OBJECT_NOT_EXIST
例外をリモート・クライアントに返します。このため、リモート・クライアントからは、オブジェクトが破棄されたように見えます。ただし、サーバントを直接使用して発行されたローカル要求はORBを介して渡されることはありません。このため、サーバントによる処理が継続されます。
サーバントがORBに接続されていない場合は、disconnect
メソッドを呼び出しても何も変化はありません。
Portable Object Adapter APIを優先するので、OMGでは非推奨です。
obj
- ORBから切り離されるサーバント・オブジェクトpublic abstract String[] list_initial_services()
String
オブジェクトの配列public abstract Object resolve_initial_references(String object_name) throws InvalidName
object_name
- 文字列としての初期サービス名InvalidName
- 指定された名前が定義済みのサービスに関連していない場合public abstract String object_to_string(Object obj)
結果として得られるString
オブジェクトは、String
オブジェクトを操作可能な方法で格納または通信できます。
obj
- 文字列に変換されるオブジェクト参照public abstract Object string_to_object(String str)
object_to_string
メソッドにより生成された文字列を変換してCORBAオブジェクト参照に戻します。str
- 変換されてオブジェクト参照に戻される文字列。object_to_string
メソッドを使ってオブジェクト参照を文字列に変換した結果でなければならない。public abstract NVList create_list(int count)
NamedValue
オブジェクトにとって(おそらく)十分な空間をNVList
に割り当てます。指定されたサイズは記憶域割当てのための単なるヒントであり、リストの最大サイズを意味しません。count
- 空間を割り当てるNamedValue
オブジェクトの推奨数NVList
NVList
public NVList create_operation_list(Object oper)
OperationDef
オブジェクトで記述される操作の引数記述で初期化された、NVList
を生成します。このOperationDef
オブジェクトは、インタフェース・リポジトリから取得されます。返されたNVList
オブジェクト内の引数は、元のIDLの操作定義と同じ順序になります。このため、動的な呼出し要求でこのリストを使用できます。oper
- リスト作成に使われるOperationDef
オブジェクトOperationDef
オブジェクトで記述されるメソッドの引数記述を格納している、新しく生成されたNVList
オブジェクトNVList
public abstract NamedValue create_named_value(String s, Any any, int flags)
NamedValue
オブジェクトを生成します。
NamedValue
オブジェクトは、(1)パラメータか戻り値、または(2)コンテキスト・プロパティとして機能します。NamedValueオブジェクト自体で使用することも、NVList
オブジェクト内の要素として使用することもできます。
s
- NamedValue
オブジェクトの名前any
- NamedValue
オブジェクトに挿入されるAny
値flags
- NamedValue
の引数モード・フラグ。ARG_IN.value
、ARG_OUT.value
、またはARG_INOUT.value
のいずれか。NamedValue
オブジェクトNamedValue
public abstract ExceptionList create_exception_list()
ExceptionList
オブジェクトを作成します。ExceptionList
オブジェクトpublic abstract ContextList create_context_list()
ContextList
オブジェクトを作成します。ContextList
オブジェクトContextList
, Context
public abstract Context get_default_context()
Context
オブジェクトを取得します。Context
オブジェクトContext
public abstract Environment create_environment()
Environment
オブジェクトを作成します。Environment
オブジェクトEnvironment
public abstract OutputStream create_output_stream()
org.omg.CORBA.portable.OutputStream
オブジェクトを生成します。メソッド呼出し時に、このオブジェクトの内部でIDLのメソッドのパラメータを整列化できます。org.omg.CORBA.portable.OutputStream
オブジェクトpublic abstract void send_multiple_requests_oneway(Request[] req)
req
- リクエスト・オブジェクトの配列public abstract void send_multiple_requests_deferred(Request[] req)
req
- Request
オブジェクトの配列public abstract boolean poll_next_response()
true
、そうでない場合は false
public abstract Request get_next_response() throws WrongTransaction
Request
のインスタンスを取得します。Request
オブジェクトWrongTransaction
- 元のリクエストの送信元とは異なるトランザクション・スコープからget_next_response
メソッドが呼び出された場合。詳細はOMG Transaction Service仕様を参照。public abstract TypeCode get_primitive_tc(TCKind tcKind)
TypeCode
オブジェクトを取り出します。tcKind
- プリミティブ型に対応するTCKind
のインスタンスTypeCode
オブジェクトpublic abstract TypeCode create_struct_tc(String id, String name, StructMember[] members)
struct
を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたID、名前、メンバーで初期化されます。id
- struct
のリポジトリIDname
- struct
の名前members
- struct
のメンバーを記述する配列struct
を記述する新しく生成されたTypeCode
オブジェクトpublic abstract TypeCode create_union_tc(String id, String name, TypeCode discriminator_type, UnionMember[] members)
union
を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたID、名前、判別子の型、メンバーで初期化されます。id
- union
のリポジトリIDname
- union
の名前discriminator_type
- union
判別子の型members
- union
のメンバーを記述する配列union
を記述する新しく生成されたTypeCode
オブジェクトpublic abstract TypeCode create_enum_tc(String id, String name, String[] members)
enum
を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたID、名前、メンバーで初期化されます。id
- enum
のリポジトリIDname
- enum
の名前members
- enum
のメンバーを記述する配列enum
を記述する新しく生成されたTypeCode
オブジェクトpublic abstract TypeCode create_alias_tc(String id, String name, TypeCode original_type)
alias
(typedef
)を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたID、名前、元の型で初期化されます。id
- aliasのリポジトリIDname
- aliasの名前original_type
- aliasである元の型を記述するTypeCode
オブジェクトalias
を記述する新しく生成されたTypeCode
オブジェクトpublic abstract TypeCode create_exception_tc(String id, String name, StructMember[] members)
exception
を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたID、名前、メンバーで初期化されます。id
- exception
のリポジトリIDname
- exception
の名前members
- exception
のメンバーを記述する配列exception
を記述する新しく生成されたTypeCode
オブジェクトpublic abstract TypeCode create_interface_tc(String id, String name)
interface
を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたIDと名前で初期化されます。id
- interfaceのリポジトリIDname
- interfaceの名前interface
を記述する新しく生成されたTypeCode
オブジェクトpublic abstract TypeCode create_string_tc(int bound)
string
を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたバウンドで初期化されます。このバウンドは、文字列の最大長を表します。ゼロは、この型コードで記述される文字列がアンバウンド形式であることを示します。bound
- string
のバウンド。負の値は不可string
を記述する新しく生成されたTypeCode
オブジェクトBAD_PARAM
- バウンドが負の値の場合public abstract TypeCode create_wstring_tc(int bound)
wstring
(ワイド文字列)を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたバウンドで初期化されます。このバウンドは、ワイド文字列の最大長を表します。ゼロは、この型コードで記述される文字列がアンバウンド形式であることを示します。bound
- wstring
のバウンド。負の値は不可wstring
を記述する新しく生成されたTypeCode
オブジェクトBAD_PARAM
- バウンドが負の値の場合public abstract TypeCode create_sequence_tc(int bound, TypeCode element_type)
sequence
を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定されたバウンドと要素型で初期化されます。bound
- sequence
のバウンド。アンバウンドの場合は0element_type
- sequence
に格納されている要素を記述するTypeCode
オブジェクトsequence
を記述する新しく生成されたTypeCode
オブジェクト@Deprecated public abstract TypeCode create_recursive_sequence_tc(int bound, int offset)
sequence
を表すTypeCode
オブジェクトを生成します。
次のコードに示すIDLのstruct
Nodeでは、シーケンスを作成するオフセット・パラメータは1になります。
Struct Node { long value; Sequence <Node> subnodes; };
bound
- sequenceのバウンド。アンバウンドの場合は0offset
- このシーケンスの要素を記述する、囲みTypeCode
オブジェクトのインデックスTypeCode
オブジェクトcreate_recursive_tc
, create_sequence_tc
public abstract TypeCode create_array_tc(int length, TypeCode element_type)
array
を表すTypeCode
オブジェクトを生成します。TypeCode
オブジェクトは、指定された長さと要素型で初期化されます。length
- array
の長さelement_type
- array
に格納されている要素の型を記述するTypeCode
オブジェクトarray
を記述する新しく生成されたTypeCode
オブジェクトpublic TypeCode create_native_tc(String id, String name)
TypeCode
オブジェクトを生成します。id
- ネイティブ型の論理ID。name
- ネイティブ型の名前。public TypeCode create_abstract_interface_tc(String id, String name)
TypeCode
オブジェクトを生成します。id
- 抽象インタフェース型の論理ID。name
- 抽象インタフェース型の名前。public TypeCode create_fixed_tc(short digits, short scale)
TypeCode
オブジェクトを生成します。digits
- 10進数の合計数を数字で指定。1から31までの論理和である必要がある。scale
- 小数点の位置。public TypeCode create_value_tc(String id, String name, short type_modifier, TypeCode concrete_base, ValueMember[] members)
TypeCode
オブジェクトを生成します。concrete_baseパラメータは、TypeCodeが生成されるvalue型の即時具象基底value型に対するTypeCodeです。value型に具象基底がない場合は、nullにすることもできます。id
- 値型の論理ID。name
- 値型の名前。type_modifier
- 値型修飾子定数。VM_NONE、VM_CUSTOM、VM_ABSTRACT、またはVM_TRUNCATABLEのうちの1つconcrete_base
- 具象基底value型を記述するTypeCode
オブジェクトmembers
- 値型のメンバーを格納する配列public TypeCode create_recursive_tc(String id)
TypeCode
を生成します。idパラメータによって、再帰TypeCodeがプレースホルダーとして機能する型のリポジトリIDが指定されます。指定したリポジトリIDに対応する、囲みTypeCodeに再帰TypeCodeが正しく埋め込まれると、標準のTypeCodeとして機能します。囲みTypeCodeに埋め込まれる前に再帰TypeCodeで操作を呼び出すと、BAD_TYPECODE
例外が発生します。
たとえば、次のIDL型宣言には再帰が含まれます。
Struct Node { Sequence<Node> subnodes; };
構造体NodeにTypeCodeを生成するには、次に示すようにTypeCode生成オペレーションを呼び出します。
String nodeID = "IDL:Node:1.0"; TypeCode recursiveSeqTC = orb.create_sequence_tc(0, orb.create_recursive_tc(nodeID)); StructMember[] members = { new StructMember("subnodes", recursiveSeqTC, null) }; TypeCode structNodeTC = orb.create_struct_tc(nodeID, "Node", members);
次は、不正なIDL型宣言です。
Struct Node { Node next; };
再帰型は、空も可能なシーケンス内でのみ使用できます。これによりAnyで構造体を転送する場合のような、整列化の問題が回避されます。
id
- 参照型の論理IDpublic TypeCode create_value_box_tc(String id, String name, TypeCode boxed_type)
TypeCode
オブジェクトを生成します。id
- 値型の論理IDname
- 値型の名前boxed_type
- 型のTypeCodepublic abstract Any create_any()
kind
フィールドがTCKind.tc_null
に設定されたTypecode
オブジェクトを格納するように初期化された、IDLのAny
オブジェクトを生成します。Any
オブジェクト@Deprecated public Current get_current()
resolve_initial_references
を使用してください。Current
オブジェクトを取り出します。Current
インタフェースは、トランザクションやセキュリティなどのサービスで使用するスレッド固有の情報を管理するために使います。Current
オブジェクトCORBA
パッケージに実装されていない機能についてのコメントpublic void run()
shutdown
を呼び出すと起動します。これは、ORBのシャットダウン時に通知を受ける複数のスレッドで使用できます。public void shutdown(boolean wait_for_completion)
wait_for_completion
パラメータがtrueの場合、この操作はすべてのORB処理(現在実行中の要求、オブジェクトの非アクティブ化、その他のオブジェクト・アダプタの操作など)が完了するまでブロックされます。アプリケーションが現在呼出しを処理しているスレッドでこれを実行した場合、ブロックによりデッドロックとなるので、OMGマイナー・コード3でBAD_INV_ORDER
システム例外がスローされます。wait_for_completion
パラメータがFALSE
の場合、復帰時にシャットダウンが完了していない場合があります。
ORBがシャットダウンの処理中でも、ORBは通常通りに動作し、すべての要求が完了するまで受信および送信要求を処理します。ORBがシャットダウンすると、オブジェクト参照管理操作だけがORBまたはそれから取得される任意のオブジェクト参照で呼び出すことができます。アプリケーションは、ORB自体に対してdestroy
操作を呼び出すこともできます。その他の操作を呼び出すと、OMGマイナー・コード4でBAD_INV_ORDER
システム例外がスローされます。
shutdown
が呼び出されたあとで、ORB.run
メソッドが復帰します。
wait_for_completion
- シャットダウンが完了するまで呼出しをブロックする場合はtrue
、直ちに復帰する場合はfalse
BAD_INV_ORDER
- 現在のスレッドが呼出しを処理している場合public boolean work_pending()
true
、メイン・スレッドを必要としない場合はfalse
を返します。true
、作業待機がなく、メイン・スレッドを必要としない場合はfalse
public void perform_work()
work_pending
メソッドとperform_work
メソッドを連携して使うと、ORBとほかのアクティビティの間でメイン・スレッドを多重化する単純なポーリング・ループを実装できます。public boolean get_service_information(short service_type, ServiceInformationHolder service_info)
service_type
- リクエストする情報のサービス・タイプを示すshort
service_info
- このメソッドで生成されたServiceInformation
オブジェクトを保持するServiceInformationHolder
オブジェクトtrue
、リクエストされたサービス・タイプの情報がない場合はfalseCORBA
パッケージに実装されていない機能についてのコメント@Deprecated public DynAny create_dyn_any(Any value)
Any
オブジェクトからDynAny
オブジェクトを新たに生成します。
value
- 新規DynAny
オブジェクトの生成元のAny
オブジェクトAny
オブジェクトから生成された新規DynAny
オブジェクトCORBA
パッケージに実装されていない機能についてのコメント@Deprecated public DynAny create_basic_dyn_any(TypeCode type) throws InconsistentTypeCode
TypeCode
オブジェクトから基本DynAny
オブジェクトを生成します。
type
- 新規DynAny
オブジェクトの生成元のTypeCode
オブジェクトTypeCode
オブジェクトから生成された新規DynAny
オブジェクトInconsistentTypeCode
- 指定されたTypeCode
オブジェクトが、オペレーションとの一貫性を保持しない場合。CORBA
パッケージに実装されていない機能についてのコメント@Deprecated public DynStruct create_dyn_struct(TypeCode type) throws InconsistentTypeCode
TypeCode
オブジェクトからDynStruct
オブジェクトを新たに生成します。
type
- 新規DynStruct
オブジェクトの生成元のTypeCode
オブジェクトTypeCode
オブジェクトから生成された新規DynStruct
オブジェクトInconsistentTypeCode
- 指定されたTypeCode
オブジェクトが、オペレーションとの一貫性を保持しない場合。CORBA
パッケージに実装されていない機能についてのコメント@Deprecated public DynSequence create_dyn_sequence(TypeCode type) throws InconsistentTypeCode
TypeCode
オブジェクトからDynSequence
オブジェクトを新たに生成します。
type
- 新規DynSequence
オブジェクトの生成元のTypeCode
オブジェクトTypeCode
オブジェクトから生成された新規DynSequence
オブジェクトInconsistentTypeCode
- 指定されたTypeCode
オブジェクトが、オペレーションとの一貫性を保持しない場合。CORBA
パッケージに実装されていない機能についてのコメント@Deprecated public DynArray create_dyn_array(TypeCode type) throws InconsistentTypeCode
TypeCode
オブジェクトからDynArray
オブジェクトを新たに生成します。
type
- 新規DynArray
オブジェクトの生成元のTypeCode
オブジェクトTypeCode
オブジェクトから生成された新規DynArray
オブジェクトInconsistentTypeCode
- 指定されたTypeCode
オブジェクトが、オペレーションとの一貫性を保持しない場合。CORBA
パッケージに実装されていない機能についてのコメント@Deprecated public DynUnion create_dyn_union(TypeCode type) throws InconsistentTypeCode
TypeCode
オブジェクトからDynUnion
オブジェクトを新たに生成します。
type
- 新規DynUnion
オブジェクトの生成元のTypeCode
オブジェクトTypeCode
オブジェクトから生成された新規DynUnion
オブジェクトInconsistentTypeCode
- 指定されたTypeCode
オブジェクトが、オペレーションとの一貫性を保持しない場合。CORBA
パッケージに実装されていない機能についてのコメント@Deprecated public DynEnum create_dyn_enum(TypeCode type) throws InconsistentTypeCode
TypeCode
オブジェクトからDynEnum
オブジェクトを新たに生成します。
type
- 新規DynEnum
オブジェクトの生成元のTypeCode
オブジェクトTypeCode
オブジェクトから生成された新規DynEnum
オブジェクトInconsistentTypeCode
- 指定されたTypeCode
オブジェクトが、オペレーションとの一貫性を保持しない場合。CORBA
パッケージに実装されていない機能についてのコメントpublic Policy create_policy(int type, Any val) throws PolicyError
type
- 生成するポリシー・オブジェクトのPolicyTypeval
- 生成するPolicyオブジェクトの初期状態設定に使用される値org.omg.CORBA.PolicyError
- リクエストされたポリシーがサポートされないか、ポリシーに対してリクエストされた初期状態がサポートされない場合。PolicyError
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.