Cosminexus SOAPアプリケーション開発ガイド
document/literalに対応したWSDLからソースコードを生成する方法,およびWSDLとソースコードのマッピングについて説明します。また,wrapped形式のWSDLから,ソースコードを生成したときの要素展開規則について説明します。
document/literal使用時のソースコードはWSDL2Javaコマンドで生成できます。WSDL2Javaコマンド実行時に,document/literal使用時のソースコードの生成に対応したWSDLを指定すると,クライアントアプリケーションおよびサーバアプリケーションに必要なソースコードが生成されます。
WSDL2Javaコマンドの使用方法については,「9.2 WSDL2Javaコマンド(ソースコードの生成)」を参照してください。
document/literalに対応したWSDLからソースコードを生成する場合に,注意が必要なマッピング規則について説明します。
soap:binding要素のstyle属性およびsoap:operation要素のstyle属性の指定と,オペレーションのstyleに設定される値の関係を,次の表に示します。
表3-10 style属性の指定とオペレーションのstyleの設定値
style属性の指定※ | オペレーションのstyleの設定値 | |
---|---|---|
soap:binding要素 | soap:operation要素 | |
○ | ○ | soap:operation要素のstyle属性の値が設定されます。 |
○ | × | soap:binding要素のstyle属性の値が設定されます。 |
× | ○ | soap:operation要素のstyle属性の値が設定されます。 |
× | × | "document"が設定されます。 |
リクエストメッセージおよびレスポンスメッセージのwsdl:part要素から参照されているxsd:element要素の値と,Javaソースコードの関係を次の表に示します。
表3-11 xsd:element要素の値とJavaのマッピング
項番 | WSDL中の項目 | 条件 | Javaへのマッピング |
---|---|---|---|
1 | リクエストメッセージのwsdl:part要素から参照されているxsd:element要素 |
|
リクエストメッセージの要素の型およびレスポンスメッセージの要素の型に対応するJavaBeansクラスは生成されません。complexTypeの内部に持つ要素が展開され,それぞれがメソッドの引数および戻り値として設定されます。 |
2 | レスポンスメッセージのwsdl:part要素から参照されているxsd:element要素 |
|
|
3 | 項番1および2以外の場合 | リクエストメッセージの要素の型およびレスポンスメッセージの要素の型に対応するJavaBeansクラスがそれぞれ生成され,メソッドの引数および戻り値として設定されます。 |
一つのwsdl:portType要素内に複数のwsdl:operation要素が定義されている場合,一つのwsdl:operation要素でも項番3の条件を満たせば,すべてのwsdl:operationに対して項番3のマッピング規則が適用されます。
次に,complexTypeがJavaBeansクラスにマッピングされない例,およびマッピングされる例を示します。
図3-18 complexTypeがJavaBeansクラスにマッピングされない例
図3-19 complexTypeがJavaBeansクラスにマッピングされる例
wrapped形式の要素展開規則を次の表に示します。展開した各子要素をpartとみなし,IN属性のものはWSDLの型から単純にJavaの型にマッピングされ,OUT属性およびINOUT属性のものはWSDLの型からHolderクラスにマッピングされます。なお,レスポンスメッセージにINOUT属性でない要素が2個以上存在する場合は,どれが戻り値か判断できないため,INOUT属性以外の要素はOUT属性となります。
表3-12 wrapped形式の要素展開規則
リクエストメッセージの子要素※1数 | レスポンスメッセージの子要素※2数 | ||
---|---|---|---|
0 | 1 | 2以上 | |
0 |
|
|
|
1以上 |
|
レスポンスメッセージの子要素数-共通要素※3である子要素数=0の場合
|
|
レスポンスメッセージの子要素数-共通要素※3である子要素数=1の場合
|
|||
レスポンスメッセージの子要素数-共通要素※3である子要素数>1の場合
|
リクエストメッセージの子要素数およびレスポンスメッセージの子要素数が,それぞれ1以上となる次の場合の例を示します。
図3-20 レスポンスメッセージの子要素数-共通要素数の子要素数=0の場合
図3-21 レスポンスメッセージの子要素数-共通要素数の子要素数=1の場合
図3-22 レスポンスメッセージの子要素数-共通要素数の子要素数>1の場合
document/literal対応のソースコードから,Java2WSDLコマンドによって生成されたWSDLは,オペレーション名と同一名称の要素で引数がラップされます。また,生成されたWSDLは,メソッドの引数および戻り値をラップする要素が定義されます。このWSDLに対してWSDL2Javaコマンドを実行した場合,ラップした要素が分解されて元の引数,戻り値を持つインタフェースとなります。
document/literal使用時に生成されるWSDL,および生成されるソースコードの関係を,次の図に示します。
図3-23 WSDL生成とJavaソースコード生成の関係(document/literal)
ただし,一部の型については,WSDL2Javaコマンド実行後に異なる型で生成される場合があります。例えば,元となるJavaインタフェースで使用している型が配列でも,生成されたJavaインタフェースでは,配列をラップしたクラスになるといった場合があります。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.