3.8.3 DIIでのユーザ定義のデータ型クラスの使用
ユーザ定義のデータ型クラスとは,任意のデータ型を持つデータ型です。DIIでユーザ定義のデータ型クラスを使用する場合,データ数やデータの型は,WSDLの複合型として自由に定義できます。
ここでは,DIIでユーザ定義のデータ型クラスを使用する方法について説明します。
- 〈この項の構成〉
(1) 処理の流れ
ユーザ定義のデータ型クラスを使用する場合,必要な情報をWSDLの複合型として定義することで,対応するJavaクラスを生成できます。
ユーザ定義のデータ型クラスは,次の図に示す流れで使用します。
-
複合型が定義されているWSDLファイル名と利用するサービス名をServiceFactory#createServiceメソッドの引数に指定し,Serviceオブジェクトを呼び出します。
-
Serviceオブジェクトの生成時にWSDLファイルからJavaソースファイルが生成されます。
-
2.と同時にJavaクラスにコンパイルされます。
-
3.でコンパイルされたJavaクラスは,DIIクラスローダによって読み込まれ,使用できる状態になります。
-
Javaソースおよびクラスファイルは,クラスローダに読み込まれたあとに削除されます。
(2) WSDLとユーザ定義のデータ型クラスのマッピング
WSDLとユーザ定義のデータ型クラスのマッピング規則,およびgetter/setterのマッピング規則を示します。
要素 |
属性 |
ユーザ定義のデータ型クラス |
備考 |
|||
---|---|---|---|---|---|---|
xsd:schema |
targetNamespace |
パッケージ名 |
− |
|||
┗ |
xsd:complexType |
name |
クラス名 |
− |
||
コンストラクタ |
publicである引数なしコンストラクタが定義されます。 |
|||||
┣ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ |
xsd:element |
name |
フィールド(プロパティ)名 |
− |
||
メソッド(アクセサ)のパラメタ名 |
− |
|||||
type |
フィールド(プロパティ)の型 |
対応する型については,「12.2.6 DII使用時のサポート範囲」を参照してください。 |
||||
メソッド(アクセサ)のパラメタと戻り値の型 |
||||||
┗ |
xsd:complexContent |
− |
継承 |
java.lang.Objectクラス,またはほかのユーザ定義のデータ型クラスを継承して定義されます。 |
||
┗ |
xsd:extension |
base |
要素 |
属性 |
ユーザ定義のデータ型クラス |
備考 |
---|---|---|---|
xsd:element |
neme |
メソッド(アクセサ)名 |
"get"+先頭を大文字にした名称で出力されます。戻り値がbooleanの場合は,"is"+先頭を大文字にした名称で出力されます。 |
type |
戻り値 |
プロパティの値が返されます。 |
要素 |
属性 |
ユーザ定義のデータ型クラス |
備考 |
---|---|---|---|
xsd:element |
neme |
メソッド(アクセサ)名 |
"set"+先頭を大文字にしたプロパティ名で出力されます。 |
type |
パラメタ |
プロパティと同じ型のパラメタが一つだけ出力されます。 |
WSDLとユーザ定義のデータ型クラスのマッピング例を次に示します。
(3) Javaソース生成時の出力先ディレクトリ
Javaソースファイルおよびクラスファイルの出力先ディレクトリを次に示します。
- Windowsの場合
-
<Application Serverのインストールディレクトリ>/c4web/dii/temp
- UNIXの場合
-
/opt/Cosminexus/c4web/dii/temp
Javaソースファイルおよびクラスファイルの出力先ディレクトリは,サーバ定義ファイルまたはクライアント定義ファイルの次のプロパティで変更できます。
- サーバ定義ファイル
-
c4web.application.<識別子>.dii_temp_directory
- クライアント定義ファイル
-
c4web.application.dii_temp_directory
サーバ定義ファイルについては,「10.2 サーバ定義ファイルの設定」を参照してください。クライアント定義ファイルについては,「10.3 クライアント定義ファイルの設定」を参照してください。
(4) ユーザ定義のデータ型クラスのClassオブジェクトを取得する方法
ユーザ定義のデータ型クラスを使用する場合,リフレクションを使用してプロパティの値を取得したり設定したりします。リフレクションで必要なユーザ定義のデータ型クラスのClassオブジェクトは,次の方法で取得します。
項番 |
ユーザ定義のデータ型クラスの使用個所 |
Classオブジェクトの取得方法 |
---|---|---|
1 |
パラメタ |
com.cosminexus.cws.xml.rpc.CallインタフェースのgetParameterClassByNameメソッドの引数に,パラメタのローカル名を指定して取得します。 |
2 |
戻り値 |
java.lang.ObjectクラスのgetClassメソッドを使用して,戻り値のオブジェクトから取得します。 |
3 |
ユーザ定義のデータ型クラスのプロパティ |
java.lang.ClassクラスのgetMethodsメソッドを使用して,アクセサのjava.lang.reflect.Methodオブジェクトを取得します。アクセサによって,取得方法が次のように異なります。
|
4 |
配列の要素型 |
java.lang.ClassクラスのgetComponentTypeメソッドを使用して,配列クラスから取得します。 |