付録A.1 バージョン05-00または05-05からの移行手順

ここでは,バージョン05-00または05-05からのSOAPアプリケーションの移行手順を説明します。また,SOAPアプリケーション移行時の注意事項についても説明します。

<この項の構成>
(1) RPC形態のSOAPアプリケーションの移行
(2) WSDL定義でのデータ型とJavaでのデータ型についての注意事項
(3) WSDL定義での定義内容と生成されるクラス,メソッド名についての注意事項
(4) 提供するAPIの変更についての注意事項
(5) トレースファイル名,およびアプリケーションログ名の変更についての注意事項
(6) サーバ定義ファイルの識別子についての注意事項
(7) 定義ファイルの移行
(8) WSDL定義で配列を使用した場合のデータ型の名前空間名について

(1) RPC形態のSOAPアプリケーションの移行

RPC形態では,WSDL定義から生成されるスタブ,スケルトン,およびサービスデプロイ定義の内容がバージョン05-00および05-05から変更になります。また,DD(web.xml)およびユーザ実装も修正する必要があります。

ここでは,SOAPアプリケーションを新規開発した場合と,既存のJavaクラスを利用して開発した場合に分けて移行手順を説明します。また,WSDLの配列定義についての注意事項を示します。

(a) 新規開発した場合の移行手順(RPC)

移行手順

  1. WSDL2Javaコマンドを使用して,スタブとスケルトンを再生成します。
  2. ユーザ実装部分でSOAP通信基盤が提供するAPIを使用している場合は,パッケージ名「com.cosminexus.c4web.*」を「com.cosminexus.cws.*」に変更します。
  3. 再生成したソースコードおよび変更したユーザ実装をコンパイルします。
  4. DD(web.xml)中のパッケージ名「com.cosminexus.c4web.*」を「com.cosminexus.cws.*」に変更します。
  5. J2EEサーバに配置するためのアーカイブ(WARファイル)を作成します。
    アーカイブの作成については,「3.9 アーカイブ(WARファイル)の作成」を参照してください。
  6. WARファイルをデプロイします。
    これでSOAPアプリケーションの移行は完了です。
(b) 既存のJavaクラスを利用して開発した場合の移行手順(RPC)

移行手順

  1. Java2WSDDコマンドを使用して,サービスデプロイ定義を再生成します。
  2. DD(web.xml)中のパッケージ名「com.cosminexus.c4web.*」を「com.cosminexus.cws.*」に変更します。
  3. J2EEサーバに配置するためのアーカイブ(WARファイル)を作成します。
    アーカイブの作成については,「3.9 アーカイブ(WARファイル)の作成」を参照してください。
  4. WARファイルをデプロイします。
    これでSOAPアプリケーションの移行は完了です。
(c) WSDL定義での配列定義について

Java2WSDLコマンドで生成される配列定義が,05-00および05-05と,06-00以降とで異なります。各バージョンの配列定義の形式を次に示します。

配列型の名称が"ArrayOf~"から"SequenceOf~"に変更になるため,作成したWSDLからソースコードを生成すると,生成されるクラス名も変更になるので注意してください。

(d) 既存のJavaクラスを利用して開発した場合の注意事項

既存のJavaクラスでjava.util.Date型を使用していた場合,05-00と05-05以降ではSOAPメッセージの形式が異なります。SOAPメッセージの形式を合わせるためには,java.util.Calendar型に変更してください。

(2) WSDL定義でのデータ型とJavaでのデータ型についての注意事項

バージョン05-00と05-05以降では,WSDL定義およびJavaでのデータ型の一部が異なります。異なるデータ型を使用している場合,クライアントおよびサーバ側実装ファイル(Implファイル)を新しいクラス名に変更する必要があります。

次の場合に分けて,WSDL定義およびJavaでのデータ型の相違点を示します。

(3) WSDL定義での定義内容と生成されるクラス,メソッド名についての注意事項

バージョン05-05以降では,WSDL定義での定義内容によって生成されるクラス名,メソッド名の関係がバージョン05-00から一部変更になります。変更になるものは,クライアントおよびImplファイルを新しいクラス,メソッド名に変更する必要があります。

次に,WSDL定義での定義内容によって生成されるクラス名,メソッド名の変更内容を示します。

(4) 提供するAPIの変更についての注意事項

SOAP通信基盤のバージョン05-05以降では,C4QNameクラスのtoStringメソッドの戻り値の形式が変更になります。また,バージョン05-05以降では,C4QNameクラスのsetLocalPartメソッドおよびsetNamespaceURIメソッドが削除されます。ここでは,toStringメソッドの変更内容,およびsetLocalPartメソッドとsetNamespaceURIメソッドをバージョン05-00で利用していた場合の修正例について示します。

(a) toStringメソッドの戻り値の形式の変更内容

バージョン05-00のtoStringメソッドで,接頭辞とローカル部の両方を設定している場合は,「接頭辞:ローカル部」の形式で返されましたが,バージョン05-05以降では「{接頭辞}ローカル部」の形式で返されます。

(b) バージョン05-00でsetLocalPartメソッドおよびsetNamespaceURIメソッドを利用していた場合の修正例

バージョン05-00で,setLocalPartメソッドおよびsetNamespaceURIメソッドを利用していた場合の,バージョン05-05以降での修正例を示します。

(5) トレースファイル名,およびアプリケーションログ名の変更についての注意事項

SOAPサービス側のトレースファイル,およびアプリケーションログの名称がバージョン05-05以降で変更になります。したがって,SOAPアプリケーション移行後にSOAPサービスを再開した場合,移行前のトレースファイル,およびアプリケーションログには情報は出力されません。

また,Managerのログエージェントを利用してSOAPアプリケーションのトレースファイルを管理している場合,ログエージェントの設定ファイル(logagent.properties)の指定を見直してください。

(6) サーバ定義ファイルの識別子についての注意事項

サーバ定義ファイルのキー名称に指定する識別子は,バージョン05-00では,SOAPアプリケーションのコンテキストルートの一部分だけを指定していましたが,バージョン05-05以降では,コンテキストルート全体を指定する必要があります。

例えば,接続先URLが「http://localhost:8080/WebApp1/Service1/services/UserInfo」の場合,バージョン05-00では「Service1」を識別子として指定していましたが,バージョン05-05以降では「WebApp1/Service1」のようにコンテキストルート全体(間の「/」を含む)を指定する必要があります。

なお,コンテキストルート中に「/」が含まれない場合は,識別子を変更する必要はありません。識別子については,「10.2 サーバ定義ファイルの設定」を参照してください。

(7) 定義ファイルの移行

定義ファイルの移行については,「付録A.3 バージョン06-70からの移行手順」を参照してください。

(8) WSDL定義で配列を使用した場合のデータ型の名前空間名について

配列データを使用する場合,SOAP通信基盤で送信するSOAPメッセージ上にある配列データの要素型の名前空間名が以前のバージョンと異なります。SOAP通信基盤を他社のSOAP製品と接続する場合,SOAP製品によってはSOAPメッセージ上の名前空間名が異なるとエラーになる場合がありますので注意してください。また,05-00または05-05で他社製品と接続している場合は,接続テストを実施したあとに,運用を開始してください。他社製品と通信できない場合があります。

WSDLでの配列要素のデータ型と,SOAPメッセージ上のデータ型の対応表を次に示します。

表A-4 SOAPメッセージ上のデータ型の対応

WSDLでのデータ型SOAPメッセージ上の配列要素のデータ型
データ型名前空間05-0005-0506-00以降
データ型名前空間名データ型名前空間名データ型名前空間名
intxsd※1intxsd※1intxsd※1intxsd※1
intsoapenc※2intxsd※1intsoapenc※2intsoapenc※2
booleanxsd※1booleanxsd※1booleanxsd※1booleanxsd※1
booleansoapenc※2booleanxsd※1booleansoapenc※2booleansoapenc※2
bytexsd※1bytexsd※1bytexsd※1bytexsd※1
bytesoapenc※2bytexsd※1bytesoapenc※2bytesoapenc※2
decimalxsd※1decimalxsd※1decimalsoapenc※2decimalxsd※1
decimalsoapenc※2decimalxsd※1decimalsoapenc※2decimalsoapenc※2
doublexsd※1doublexsd※1doublexsd※1doublexsd※1
doublesoapenc※2doublexsd※1doublesoapenc※2doublesoapenc※2
floatxsd※1floatxsd※1floatxsd※1floatxsd※1
floatsoapenc※2floatxsd※1floatsoapenc※2floatsoapenc※2
integerxsd※1integerxsd※1integerxsd※1integerxsd※1
integersoapenc※2integerxsd※1integersoapenc※2integersoapenc※2
longxsd※1longxsd※1longxsd※1longxsd※1
longsoapenc※2longxsd※1longsoapenc※2longsoapenc※2
shortxsd※1shortxsd※1shortxsd※1shortxsd※1
shortsoapenc※2shortxsd※1shortsoapenc※2shortsoapenc※2
stringxsd※1stringxsd※1stringxsd※1stringxsd※1
stringsoapenc※2stringxsd※1stringsoapenc※2stringsoapenc※2
注※1
xsdは名前空間URIが"http://www.w3.org/2001/XMLSchema"であることを示します。
注※2
soapencは名前空間URIが"http://schemas.xmlsoap.org/soap/encoding/"であることを示します。