8.0.0の一部のプラットフォームのWebサービスから移行した場合に発生しうるトラブルについて説明します。
スタブを生成し直すと、構造体型・Bean型クラスのコンストラクタの引数の順番が変わっている(iswsgen wsdlコマンドで生成されるWSDLでcomplexTypeのメンバの順番が変わる)
8.0.0の一部のプラットフォームにおいて、iswsgen wsdlコマンドがcomplexType内のelementを、開発環境・実行環境などの条件に影響を受ける不定の順番で出力していました。
今版では環境などに影響を受けない特定の順番で出力するため、生成されるWSDLは8.0.0の一部のプラットフォームと差異があります。そのWSDLを使用してスタブを生成しなおすと本問題が発生します。
対応方法
生成し直したスタブにあわせて、アプリケーションを修正してください。
なお、以下の方法により以前と同様の不定順序のWSDLを生成できますが、上記の対応方法で移行を行うことを強く推奨します。
下記の内容のファイルを作成する
ファイルの内容
com.fujitsu.interstage.isws.utils.fields.nosort=true
環境変数ISWSGEN_JAVA_OPTに以下のように1.のパスを指定する
環境変数ISWSGEN_JAVA_OPTの設定値(ファイルのパスが「/tmp/iswsgen.properties」の場合)
-Dcom.fujitsu.interstage.isws.configuration=/tmp/iswsgen.properties
サーバから返信の通信データの中で、complexType内のelementの順番が変わっている
8.0.0の一部のプラットフォームにおいて、サーバから返信の通信データの中のcomplexType内のelementが、開発環境・実行環境などの条件に影響を受ける不定の順番で出力されていました。
今版では環境などに影響を受けない特定の順番で出力するため、8.0.0の一部のプラットフォームとサーバからの返信の通信データに差異があります。
これにより実際の通信において、complexType内のelementが、WSDLにおける定義と一致しない順番でサーバから返信される場合があります。
ただし、iswsgen serverコマンドを使用して開発したWebサービスアプリケーションでは本問題はありません。
対応方法
WSDLにおける定義と、実際のサーバからの返信データが一致しない場合、WSDLを本プラットフォームで生成し直してください。
なお、以下の方法で、以前と同様の不定順序でのサーバからの返信を行えますが、上記の対応方法で移行を行うことを強く推奨します。
該当のIJServerに対して、Webサービス設定ファイルを指定して以下の項目を設定してください。
Webサービス設定ファイルについては、“第19章 Webサービスの運用”を参照してください。
Webサービスアプリケーション(iswsgen serverコマンドで生成したものを除きます)からの返信において、構造体・Bean型のメンバを特定の順序にソートせずに送信します。
com.fujitsu.interstage.isws.utils.fields.nosort
true
構造体・Bean型のメンバを特定の順序にソートして送信します。
サーバにおいて、継承関係にある構造体型・Bean型の子クラス側のメンバが無視される
8.0.0の一部のプラットフォームにおいて、サーバで複数の構造体型・Bean型が継承関係にあった場合、親クラス側に同名のpublicフィールドが存在するにも関わらず、子クラス側のメンバが不正に利用(リクエストのデータが親クラス側のpublicフィールドではなく子クラス側のメンバに反映される・子クラス側のメンバがレスポンスのデータに反映される)される場合がありました。今版では、親クラス側に同名のpublicフィールドが存在する場合、正しく親クラス側のpublicフィールドが利用されます。
対応方法
子クラス側のメンバではなく、親クラス側のフィールドを使用するようにアプリケーションを修正してください。
iswsgen serverおよびiswsgen clientコマンドでスタブなどを再生成すると、メソッドの引数および返り値のクラスが変わっている
8.0.0の一部のプラットフォームにおいて、iswsgen serverおよびiswsgen clientコマンドが、特定の条件に該当するWSDLを入力とした場合、インタフェースが誤ったスタブやサービスエンドポイントクラスおよび関連クラスのソースを生成する場合がありました。今版では正しい生成物を生成するため、生成されるJavaソースのインタフェースが8.0.0の一部のプラットフォームと差異がある場合があります。
対応方法
生成し直したスタブなどにあわせて、アプリケーションを修正してください。
移行前の環境で作成したWebサービスのWARファイルを配備すると、配備がエラー(isws16021)になる、または、リクエスト受信時にエラー(isws11003)となる
上記の「iswsgen serverおよびiswsgen clientコマンドでスタブなどを再生成すると、メソッドの引数および返り値のクラスが変わっている」の問題による誤ったJavaインタフェースを含むWARファイルを、今版の環境に配備すると、インタフェースの不整合が発生し、配備に失敗する、または、リクエストの受信(解析)に失敗する場合があります。
対応方法
今版の環境において、iswsgen serverコマンドで、サービスエンドポイントインタフェースなどを再生成してください。再生成された資材は、上記の「iswsgen serverおよびiswsgen clientコマンドでスタブなどを再生成すると、メソッドの引数および返り値のクラスが変わっている」に該当しますので、必要に応じて対応してください。
iswsgen serverコマンドで、特定のWSDLを入力とした場合にエラー(isws11254またはisws11251)になる
iswsgen serverコマンドにチェック機能が追加されたため、特定の条件に該当し、正しい通信が行うことができない定義内容のWSDLを指定した場合にエラー(isws11254またはisws11251)になります。
条件、および対処方法は、“メッセージ集”を参照してください。
WSDLで定義したユーザ定義型の要素について、SOAPメッセージ上でxsi:type属性の値が変わっている
8.0.0の一部のプラットフォームにおいて、XMLSchemaのsimpleTypeから派生させたユーザ定義型を使用している場合、または、FaultDetailの要素についてWSDLのmessageのpartからelement属性を使用してXMLSchemaの要素定義を参照している場合において、xsi:type属性に誤った値を設定する事がありました。
今版では正しい値を設定するため、一部のプラットフォームとxsi:typeの値に差異がある場合があります。なお、匿名型の要素については、次の様な型名を割り当てます「'>'で始まり、これに、該当要素が所属する型がある場合はその型名に'>'を繋げ、これに、該当要素の名前を繋げた名前」。
対応方法
今版の環境において、iswsgen serverコマンドおよびiswsgen clientコマンドで、サービスエンドポイントインタフェースなどを再生成する事で、正しいxsi:typeが設定される様になります。誤ったxsi:type属性値に依存したアプリケーションがある場合は修正してください。