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, 2013, Oracle and/or its affiliates. All rights reserved.