Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド
Accountオブジェクトと同様に,AccountManagerインタフェースもメソッドを一つしか宣言しません。しかし,AccountManagerImplオブジェクトのopenメソッドにはアカウント名パラメタを指定できるので,invokeメソッドが実行する処理は少しだけ複雑になります。コードサンプル18-3(C++)および18-4(Java)に,AccountManagerImplオブジェクトのinvokeメソッドのインプリメンテーションを示しています。
このメソッドは最初に,リクエストされたオペレーションの名前が「open」であるかどうかを調べます。この名前が一致しない場合は,BAD_OPERATION例外が発生します。AccountManagerオブジェクトが複数のメソッドを提供する場合には,invokeメソッドは可能なすべてのオペレーション名について検査し,適切な内部メソッドを使用してオペレーション要求を処理する必要があります。
AccountManagerImplオブジェクトのinvokeメソッドがオペレーション要求の入力パラメタを処理するために使用する手順は,次のとおりです。
openメソッドはアカウント名パラメタを予期しているので,ServerRequest内のパラメタを入れるNVListオブジェクトが生成されます。NVListクラスは,一つ以上のNamedValueオブジェクトが入っているパラメタリストをインプリメントします。NVListクラスとNamedValueクラスについては,「17. 動的起動インタフェースの使用」を参照してください。
アカウント名を入れるAnyオブジェクトが生成されます。このAnyは,引数名を「name」,パラメタ型をARG_INに設定してNVListに追加されます。
NVListが初期化されたあと,リスト内のすべてのパラメタ値を取得するために,ServerRequestオブジェクトのargumentsメソッドが呼び出されます。
入力引数用にNVListを構築する代わりに,VisiBroker ORBオブジェクトのcreate_operation_listメソッドを使用することもできます。このメソッドはOperationDefオブジェクトを受け取り,必要なすべてのAnyオブジェクトを使用して完全に初期化されたNVListオブジェクトを返します。適切なOperationDefオブジェクトは,「16. インタフェースリポジトリの使用」で説明したIRから取得できます。
ServerRequestオブジェクトのargumentsメソッドを起動したあと,nameパラメタの値を抽出して新しいAccountオブジェクトの生成に使用できます。新規に生成されたAccountオブジェクトを入れるためのAnyオブジェクトが生成され,ServerRequestオブジェクトのset_resultメソッドを起動することによってそのAnyオブジェクトが呼び出し側へ返されます。
All Rights Reserved. Copyright (C) 2008, Hitachi, Ltd.
COPYRIGHT (C) 1992-2004 Borland Software Corporation. All rights reserved.