3.3.8 Object Accessアダプタを定義する
Object Accessアダプタの定義方法について説明します。
- 〈この項の構成〉
(1) 電文フォーマットの作成
各電文のフォーマットについて説明します。
(a) 要求電文
要求電文の電文フォーマットを次に示します。
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> <xsd:element name="exec2"> <xsd:complexType> <xsd:sequence> <xsd:element name="method_name" type="xsd:string"/> <xsd:element name="in_list" type="tns:OWB2.NameValueList"/> <xsd:element name="session_data" type="tns:OWB2.NameValueList"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="OWB2.NameValueList"> <xsd:complexContent> <xsd:restriction base="tns:EComm2.NameValueList"> <xsd:sequence> <xsd:element name="item" type="tns:EComm2.NameValue" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="EComm2.NameValueList"> <xsd:sequence> <xsd:element name="item" type="tns:EComm2.NameValue" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="EComm2.NameValue"> <xsd:sequence> <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="value" type="tns:CORBA.Any" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CORBA.Any"> <xsd:sequence> <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
項目 |
電文フォーマット |
---|---|
要求電文形式 |
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> [オペレーション情報] [型定義情報]... </xsd:schema> |
オペレーション情報 |
<xsd:element name="exec2"> <xsd:complexType> <xsd:sequence> [入力パラメタ情報]... </xsd:sequence> </xsd:complexType> </xsd:element> |
入力パラメタ情報 |
<xsd:element name="IDLに定義したパラメタ名称" type="[型情報]"/> |
型定義情報:any |
<xsd:complexType name="CORBA.Any"> <xsd:sequence> <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> |
型定義情報:struct |
<xsd:complexType name="IDLに定義した構造体宣言名称"> <xsd:sequence> <xsd:element name="IDLに定義した構造体変数名称" type="[型情報]" minOccurs="1" maxOccurs="1"/>... </xsd:sequence> </xsd:complexType> |
型定義情報:sequence |
<xsd:complexType name="IDLに定義したシーケンス宣言名称"> <xsd:sequence> <xsd:element name="item" type="[型情報]" minOccurs="0" maxOccurs="0"/> </xsd:sequence> </xsd:complexType> |
型情報:string |
xsd:string |
型情報:any |
tns:CORBA.Any |
型情報:struct |
tns:IDLに定義した構造体宣言名称 |
型情報:sequence |
tns:IDLに定義したシーケンス宣言名称 |
要求電文の電文サンプルを次に示します。
<?xml version="1.0" encoding="UTF-8"?> <tns:exec2 xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> <method_name>Mtd1</method_name> <in_list> <item> <name>MP7G</name> <value> <type>long</type> <value>200</value> </value> </item> <item> <name>GP9AKJ</name> <value> <type>Ecomm2.OctSeq</type> <value>ABCDE</value> </value> </item> </in_list> <session_data> <item> <name>S03U48</name> <value> <type>long</type> <value>212</value> </value> </item> <item> <name>H4TF8L</name> <value> <type>Ecomm2.OctSeq</type> <value>OK</value> </value> </item> </session_data> </tns:exec2>
(b) 応答電文
応答電文の電文フォーマットを次に示します。
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> <xsd:element name="exec2Response"> <xsd:complexType> <xsd:sequence> <xsd:element name="result" type="tns:OWB2.NameValueList"/> <xsd:element name="out_rec" type="tns:OWB2.RecordValue"/> <xsd:element name="session_data" type="tns:OWB2.NameValueList"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="OWB2.NameValueList"> <xsd:complexContent> <xsd:restriction base="tns:EComm2.NameValueList"> <xsd:sequence> <xsd:element name="item" type="tns:EComm2.NameValue" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="EComm2.NameValueList"> <xsd:sequence> <xsd:element name="item" type="tns:EComm2.NameValue" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="EComm2.NameValue"> <xsd:sequence> <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="value" type="tns:CORBA.Any" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CORBA.Any"> <xsd:sequence> <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OWB2.RecordValue"> <xsd:complexContent> <xsd:restriction base="tns:EComm2.RecordValue"> <xsd:sequence> <xsd:element name="name" type="tns:EComm2.NameList" minOccurs="1" maxOccurs="1"/> <xsd:element name="record" type="tns:EComm2.RecordList" minOccurs="1" maxOccurs="1"/> </xsd:sequence> <xsd:restriction base="tns:EComm2.RecordValue"> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="EComm2.RecordValue"> <xsd:sequence> <xsd:element name="name" type="tns:EComm2.NameList" minOccurs="1" maxOccurs="1"/> <xsd:element name="record" type="tns:EComm2.RecordList" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="EComm2.NameList"> <xsd:sequence> <xsd:element name="item" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="EComm2.RecordList"> <xsd:sequence> <xsd:element name="item" type="tns:EComm2.ValueList" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="EComm2.ValueList"> <xsd:sequence> <xsd:element name="item" type="tns:CORBA.Any" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
項目 |
電文フォーマット |
---|---|
応答電文形式 |
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> [オペレーション情報] [型定義情報]... </xsd:schema> |
オペレーション情報 |
<xsd:element name="exec2Response"> <xsd:complexType> <xsd:sequence> [出力パラメタ情報]... </xsd:sequence> </xsd:complexType> </xsd:element> |
出力パラメタ情報 |
<xsd:element name="IDLに定義したパラメタ名称" type="[型情報]"/> 注 この情報には,リターン情報を含みます。 |
型定義情報:any |
<xsd:complexType name="CORBA.Any"> <xsd:sequence> <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="value" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> |
型定義情報:struct |
<xsd:complexType name="IDLに定義した構造体宣言名称"> <xsd:sequence> <xsd:element name="IDLに定義した構造体変数名称" type="[型情報]" minOccurs="1" maxOccurs="1"/>... </xsd:sequence> </xsd:complexType> |
型定義情報:sequence |
<xsd:complexType name="IDLに定義したシーケンス宣言名称"> <xsd:sequence> <xsd:element name="item" type="[型情報]" minOccurs="0" maxOccurs="0"/> </xsd:sequence> </xsd:complexType> |
型情報:string |
xsd:string |
型情報:any |
tns:CORBA.Any |
型情報:struct |
tns:IDLに定義した構造体宣言名称 |
型情報:sequence |
tns:IDLに定義したシーケンス宣言名称 |
応答電文の電文サンプルを次に示します。
<?xml version="1.0" encoding="UTF-8" ?> <tns:exec2Response xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> <result> <item> <name>MP7G</name> <value> <type>long</type> <value>200</value> </value> </item> <item> <name>GP9AKJ</name> <value> <type>Ecomm2.OctSeq</type> <value>ABCDE</value> </value> </item> </result> <out_rec> <name /> <record /> </out_rec> <session_data> <item> <name>S03U48</name> <value> <type>long</type> <value>212</value> </value> </item> <item> <name>H4TF8L</name> <value> <type>Ecomm2.OctSeq</type> <value>OK</value> </value> </item> <item> <name>GW:status</name> <value> <type>long</type> <value>0</value> </value> </item> </session_data> </tns:exec2Response>
(c) フォルト電文
フォルト電文の電文フォーマットを次に示します。
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> <xsd:element name="EComm2.Exceptionexec2Fault1"> <xsd:complexType> <xsd:sequence> <xsd:element name="code" type="xsd:int"/> <xsd:element name="message" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
項目 |
電文フォーマット |
---|---|
フォルト電文形式 |
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2" xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> [例外定義情報] </xsd:schema> |
例外定義情報 |
<xsd:element name="exec2Fault1"> <xsd:complexType> <xsd:sequence> [例外情報]... </xsd:sequence> </xsd:complexType> </xsd:element> |
例外情報 |
<xsd:element name="IDLの例外に定義した変数名称" type="[型情報]"/> |
型情報:long |
xsd:int |
型情報:string |
xsd:string |
フォルト電文の電文サンプルを次に示します。
<?xml version="1.0" encoding="UTF-8" ?> <tns:exec2Fault1 xmlns:tns="http://ObjectAccess.cstmadp.csc.soft.Hitachi.co.jp/ow/OWB2"> <code>0</code> <message>no such method:Resource 'Base' does not contain method 'Mtd1'.</message> </tns:exec2Fault1>
(d) Object Wrapper提供IDL
Object Wrapper提供のIDLのサンプルを次に示します。
module EComm2 { typedef sequence<octet> OctSeq; typedef sequence<OctSeq> NameList; typedef sequence<any> ValueList; typedef sequence<ValueList> RecordList; struct Binary { OctSeq content; }; struct NameValue { OctSeq name; any value; }; typedef sequence<NameValue> NameValueList; struct RecordValue { NameList name; RecordList record; }; exception _Exception { long code; OctSeq message; }; }; interface OWB2 { typedef EComm2::NameValueList NameValueList; typedef EComm2::RecordValue RecordValue; NameValueList exec2 ( in string method_name, in NameValueList in_list, out RecordValue out_rec, inout NameValueList session_data) raises ( EComm2::_Exception ); };
(2) Object Accessアダプタ通信構成定義ファイルの作成
Object Accessアダプタの場合,Object Accessアダプタ通信構成定義ファイルを作成する必要があります。
Object Accessアダプタ通信構成定義ファイルの詳細は,マニュアル「サービスプラットフォーム リファレンス」の「3.7.1 Object Accessアダプタ通信構成定義ファイル」を参照してください。
(3) データ変換の定義
データ変換(マッピング)定義画面で,変換元の電文フォーマット定義ファイルおよび変換先の電文フォーマット定義ファイルを設定して,データ変換を定義します。
データ変換の定義方法については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「7. データ変換の定義」を参照してください。
(4) ユーザ定義ファイルの作成
ユーザ定義ファイルは,次の定義ファイルをjarコマンドでアーカイブして作成します。
-
TPBroker環境定義ファイル
-
Object Accessアダプタ通信構成定義ファイル
ユーザ定義ファイルの作成手順を説明します。
-
コマンドプロンプトを起動します。
[スタート]メニューの[プログラム]から[アクセサリ]−[コマンド プロンプト]でコマンドプロンプトを起動します。
-
ユーザ定義ファイルを作業ディレクトリへコピーします。
任意の作業ディレクトリに,次のディレクトリ構成を作成して,ユーザ定義ファイルをコピーします。
jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def
「C:\conf」ディレクトリに保存されている各定義ファイルを,「C:\work」ディレクトリを作業ディレクトリとしてコピーする場合の例を次に示します。
>XCOPY C:\conf\adpoa_com.xml C:\work\jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\ /V >XCOPY C:\conf\adpoa_tpb.properties C:\work\jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\ /V
-
ユーザ定義ファイルをアーカイブします。
サービスプラットフォームが提供するjarコマンドを実行して,ユーザ定義ファイルを作成します。
「Object Accessアダプタ通信構成定義ファイル」だけをアーカイブする場合と,「Object Accessアダプタ通信構成定義ファイル」および「TPBroker環境定義ファイル」をアーカイブする場合の例を次に示します。ここで示す例では,「C:\work」ディレクトリを作業ディレクトリとして,ユーザ定義ファイルを「C:\conf」に作成します。
Object Accessアダプタ通信構成定義ファイルだけをアーカイブする場合
> jar cf C:\conf\adpoadef.jar -C C:\work jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\adpoa_com.xml
Object Accessアダプタ通信構成定義ファイルおよびTPBroker環境定義ファイルをアーカイブする場合
> jar cf C:\conf\adpoadef.jar -C C:\work jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\adpoa_com.xml -C C:\work jp\co\Hitachi\soft\csc\cstmadp\ObjectAccess\cmd\def\adpoa_tpb.properties
-
作業ディレクトリを削除します。
RMDIRコマンドを実行して,ユーザ定義ファイルのアーカイブ用に作成したディレクトリを削除します。
「C:\work」ディレクトリを作業ディレクトリとした場合の例を次に示します。
> RMDIR /S /Q C:\work\jp
注意事項を次に示します。
-
Object Accessアダプタ通信構成定義ファイル名称が,「adpoa_com.xml」であることを確認してください。ほかのファイル名称を指定した場合,実行環境で正常に動作しません。
-
TPBroker環境定義ファイル名称が,「adpoa_tpb.properties」であることを確認してください。ほかのファイル名称を指定した場合,実行環境で正常に動作しません。
-
ユーザ定義ファイルの作成で使用する作業ディレクトリおよびユーザ定義ファイルの作成先ディレクトリは,書き込み権限を持つディレクトリを指定してください。
(5) サービスアダプタ定義画面での操作
Object Accessアダプタを定義する場合の手順を次に示します。設定内容の詳細は,「3.3.17(8) Object Accessアダプタの場合」を参照してください。
-
サービスアダプタ定義画面を表示します。
サービスアダプタ定義画面の表示方法については,「3.3.1(4) サービスアダプタ定義画面の表示」を参照してください。
-
サービス部品制御情報の[サービス名]および[サービスID]を必要に応じて編集します。
-
サービス部品制御情報の[追加]ボタンをクリックして,オペレーションを追加します。
任意のフォルト名を指定してください。
-
オペレーション情報の[通信モデル]のドロップダウンリストから,「同期」を選択します。
-
要求電文について,手順6.から手順15.までを実施します。
-
次に示す操作をします。
- 標準電文のフォーマットを指定する場合
-
手順7.〜9.を実施して,手順10.に進みます。
- 標準電文のフォーマットを指定しない場合
-
手順10.に進みます。
-
標準電文の[使う]チェックボックスをチェックします。
-
標準電文の[参照]ボタンをクリックして,[電文フォーマット]に標準電文のフォーマットを指定します。
指定できる電文フォーマットの形式については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「2.6.5 XMLスキーマの適用範囲」を参照してください。
-
標準電文の[表示]ボタンをクリックします。
電文フォーマットがXML形式の場合,標準電文のフォーマットが表示されます。必要に応じて指定した標準電文のフォーマットを確認してください。
-
サービス部品電文に次の電文フォーマットが設定されていることを確認します。
-
要求電文:exec2_request.xsd
-
応答電文:exec2_response.xsd
-
-
サービス部品電文の[表示]ボタンをクリックします。
サービス部品電文のフォーマットが表示されます。必要に応じてサービス部品電文のフォーマットを確認してください。
-
次に示す操作をします。
- 標準電文の[使う]チェックボックスをチェックした場合
-
手順13.〜15.を実施して,手順16.に進みます。
- 標準電文の[使う]チェックボックスをチェックしない場合
-
手順16.に進みます。
-
データ変換定義のファイル名を入力します。
-
[編集]ボタンをクリックします。
データ変換定義画面が表示されます。初めて定義する場合は,[ルート要素選択]ダイアログが表示されます。
-
標準電文とサービス電文の内容をマッピングします。
-
応答電文についても,手順6.から手順15.までを実施します。
-
フォルト電文の電文フォーマットに「exec2_fault1.xsd」が設定されていることを確認します。
-
サービスアダプタ定義(詳細)タブをクリックします。
サービスアダプタ定義画面(詳細)が表示されます。
-
サービスアダプタ(EJB-JARファイル)およびユーティリティクラス(JARファイル)の名称を確認します。
サービスアダプタ(EJB-JARファイル)の名称が「cscmsg_adpejb.jar」,ユーティリティクラス(JARファイル)の名称が「adpoapc.jar」であることを確認してください。
-
ユーティリティクラス(JARファイル)の[追加]ボタンをクリックして,次のユーティリティクラスを追加します。
-
adpoadef.jar(ユーザ定義ファイル)
-
-
定義内容を確認して,Eclipseのメニューから[ファイル]−[保管]を選択し,定義内容を保存します。
(6) Object Accessアダプタ実行環境プロパティファイルの作成
Object Accessアダプタの場合,Object Accessアダプタ実行環境プロパティファイルを作成する必要があります。
Object Accessアダプタ実行環境プロパティファイルの詳細は,マニュアル「サービスプラットフォーム リファレンス」の「6.11.1 Object Accessアダプタ実行環境プロパティファイル」を参照してください。
(7) TPBroker環境定義ファイルの作成
Object AccessアダプタのORB動作の設定は,プロパティ形式のTPBroker環境定義ファイルとして,ユーザが独自に作成します。定義ファイル名称は"adpoa_tpb.properties"とし,ユーザ定義ファイルにアーカイブします。TPBroker環境定義ファイルは,ユーザ定義ファイルにアーカイブ後に,HCSC開発環境でパッケージングし,実行環境へインポートすることで実行環境に反映されます。TPBroker環境定義ファイルの内容を変更する場合は,ユーザ定義ファイルの再アーカイブ後に,HCSC開発環境で再度パッケージングして実行環境へインポートします。なお,ORB動作の設定が必要ない場合は,TPBroker環境定義ファイルを作成する必要はありません。
TPBroker環境定義ファイルに設定したORB動作は,ほかの環境変数などの定義より優先して適用されます。
ORBの動作を定義します。同一のキーが存在する場合は,後述のキーの値が反映されます。行頭の#や!はコメントを示します。
<property name>=<property value>
定義できるプロパティについては,マニュアル「Borland(R) Enterprise Server VisiBroker(R) プログラマーズリファレンス」を参照してください。
Object Accessアダプタでは,TPBrokerの次のプロパティを標準で設定します。プロパティは,Object AccessアダプタのTPBroker環境定義ファイルで変更します。ただし,vbroker.agent.enableLocatorの設定は変更できません。Object Accessアダプタで,trueを設定してサービス実行時にスマートエージェントと通信します。
プロパティ |
説明 |
設定値 |
---|---|---|
vbroker.ce.iiop.ccm.htc.readerPerConnection |
RelativeRoundtripTimeoutPolicyで指定したタイムアウト値が満了した場合,コネクションを切断するかを指定します。 |
true タイムアウト発生時にコネクションをクローズしません。 |
vbroker.agent.enableLocator |
サービス実行時にスマートエージェントと通信するかを指定します。 |
true サービス実行時にスマートエージェントと通信します。 この設定は変更できません。 |