ここでは,バージョン05-00または05-05からのSOAPアプリケーションの移行手順を説明します。また,SOAPアプリケーション移行時の注意事項についても説明します。
RPC形態では,WSDL定義から生成されるスタブ,スケルトン,およびサービスデプロイ定義の内容がバージョン05-00および05-05から変更になります。また,DD(web.xml)およびユーザ実装も修正する必要があります。
ここでは,SOAPアプリケーションを新規開発した場合と,既存のJavaクラスを利用して開発した場合に分けて移行手順を説明します。また,WSDLの配列定義についての注意事項を示します。
移行手順
移行手順
Java2WSDLコマンドで生成される配列定義が,05-00および05-05と,06-00以降とで異なります。各バージョンの配列定義の形式を次に示します。
<complexType name="ArrayOf(任意)">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="データ型[]" />
</restriction>
</complexContent>
</complexType>
<complexType name="SequenceOf(任意)">
<sequence>
<element name="item" minOccurs="0" maxOccurs="unbounded" type="データ型" />
</sequence>
</complexType>
配列型の名称が"ArrayOf~"から"SequenceOf~"に変更になるため,作成したWSDLからソースコードを生成すると,生成されるクラス名も変更になるので注意してください。
既存のJavaクラスでjava.util.Date型を使用していた場合,05-00と05-05以降ではSOAPメッセージの形式が異なります。SOAPメッセージの形式を合わせるためには,java.util.Calendar型に変更してください。
バージョン05-00と05-05以降では,WSDL定義およびJavaでのデータ型の一部が異なります。異なるデータ型を使用している場合,クライアントおよびサーバ側実装ファイル(Implファイル)を新しいクラス名に変更する必要があります。
次の場合に分けて,WSDL定義およびJavaでのデータ型の相違点を示します。
表A-1 WSDL定義でのデータ型とJavaでのデータ型の相違点(入出力種別が「IN」,およびメソッド戻り値の場合)
WSDLでのデータ型 | Javaでのデータ型 | ||
---|---|---|---|
データ型 | 名前空間URL | 05-00 | 05-05以降 |
base64 | http://schemas.xmlsoap.org/soap/encoding/ | java.lang.Byte[] | byte[] |
dateTime | http://www.w3.org/2001/XMLSchema | java.util.Date | java.util.Calendar |
QName | http://www.w3.org/2001/XMLSchema | javax.xml.rpc.namespace.QName | javax.xml.namespace.QName |
timeInstant | http://www.w3.org/2000/10/XMLSchema | java.util.Date | java.util.Calendar |
表A-2 WSDL定義でのデータ型とJavaでのデータ型の相違点(入出力種別が「INOUT」および「OUT」の場合)
WSDLでのデータ型 | Javaでのデータ型 | ||
---|---|---|---|
データ型 | 名前空間URL | 05-00 | 05-05以降 |
base64 | http://schemas.xmlsoap.org/soap/encoding/ | javax.xml.rpc.holders.ByteWrapperArrayHolder※ | javax.xml.rpc.holders.ByteArrayHolder |
date | http://www.w3.org/2001/XMLSchema | javax.xml.rpc.holders.DateHolder | org.apache.axis.holders.DateHolder |
dateTime | http://www.w3.org/2001/XMLSchema | javax.xml.rpc.holders.DateHolder | javax.xml.rpc.holders.CalendarHolder |
timeInstant | http://www.w3.org/2000/10/XMLSchema | javax.xml.rpc.holders.DateHolder | javax.xml.rpc.holders.CalendarHolder |
表A-3 JavaクラスからWSDL定義を生成した場合のデータ型の相違点
Javaでのデータ型 | WSDLでのデータ型 | ||
---|---|---|---|
バージョン | データ型 | 名前空間URL | |
java.lang.Byte[] | 05-00 | base64 | http://schemas.xmlsoap.org/soap/encoding/ |
05-05以降 | SequenceOf_soapenc_byte | definitions要素のtargetNamespace※ | |
byte[] javax.xml.rpc.holders.ByteArrayHolder | 05-00 | base64Binary | http://www.w3.org/2001/XMLSchema |
05-05以降 | base64 | http://schemas.xmlsoap.org/soap/encoding/ |
バージョン05-05以降では,WSDL定義での定義内容によって生成されるクラス名,メソッド名の関係がバージョン05-00から一部変更になります。変更になるものは,クライアントおよびImplファイルを新しいクラス,メソッド名に変更する必要があります。
次に,WSDL定義での定義内容によって生成されるクラス名,メソッド名の変更内容を示します。
バージョン | 生成されるクラス名 |
---|---|
05-00 | localhost.TestHolder |
05-05以降 | localhost.holders.TestHolder |
バージョン | setメソッド名 | getメソッド名 |
---|---|---|
05-00 | void setCar(boolean car) | boolean getCar() |
05-05以降 | setCar(boolean car) | boolean isCar() |
SOAP通信基盤のバージョン05-05以降では,C4QNameクラスのtoStringメソッドの戻り値の形式が変更になります。また,バージョン05-05以降では,C4QNameクラスのsetLocalPartメソッドおよびsetNamespaceURIメソッドが削除されます。ここでは,toStringメソッドの変更内容,およびsetLocalPartメソッドとsetNamespaceURIメソッドをバージョン05-00で利用していた場合の修正例について示します。
バージョン05-00のtoStringメソッドで,接頭辞とローカル部の両方を設定している場合は,「接頭辞:ローカル部」の形式で返されましたが,バージョン05-05以降では「{接頭辞}ローカル部」の形式で返されます。
バージョン05-00で,setLocalPartメソッドおよびsetNamespaceURIメソッドを利用していた場合の,バージョン05-05以降での修正例を示します。
SOAPサービス側のトレースファイル,およびアプリケーションログの名称がバージョン05-05以降で変更になります。したがって,SOAPアプリケーション移行後にSOAPサービスを再開した場合,移行前のトレースファイル,およびアプリケーションログには情報は出力されません。
また,Cosminexus Managerのログエージェントを利用してSOAPアプリケーションのトレースファイルを管理している場合,ログエージェントの設定ファイル(logagent.properties)の指定を見直してください。
サーバ定義ファイルのキー名称に指定する識別子は,バージョン05-00では,SOAPアプリケーションのコンテキストルートの一部分だけを指定していましたが,バージョン05-05以降では,コンテキストルート全体を指定する必要があります。
例えば,接続先URLが「http://localhost:8080/WebApp1/Service1/services/UserInfo」の場合,バージョン05-00では「Service1」を識別子として指定していましたが,バージョン05-05以降では「WebApp1/Service1」のようにコンテキストルート全体(間の「/」を含む)を指定する必要があります。
なお,コンテキストルート中に「/」が含まれない場合は,識別子を変更する必要はありません。識別子については,「10.2 サーバ定義ファイルの設定」を参照してください。
定義ファイルの移行については,「付録A.3 バージョン06-70からの移行手順」を参照してください。
配列データを使用する場合,SOAP通信基盤で送信するSOAPメッセージ上にある配列データの要素型の名前空間名が以前のバージョンと異なります。SOAP通信基盤を他社のSOAP製品と接続する場合,SOAP製品によってはSOAPメッセージ上の名前空間名が異なるとエラーになる場合がありますので注意してください。また,05-00または05-05で他社製品と接続している場合は,接続テストを実施したあとに,運用を開始してください。他社製品と通信できない場合があります。
WSDLでの配列要素のデータ型と,SOAPメッセージ上のデータ型の対応表を次に示します。
表A-4 SOAPメッセージ上のデータ型の対応
WSDLでのデータ型 | SOAPメッセージ上の配列要素のデータ型 | ||||||
---|---|---|---|---|---|---|---|
データ型 | 名前空間 | 05-00 | 05-05 | 06-00以降 | |||
データ型 | 名前空間名 | データ型 | 名前空間名 | データ型 | 名前空間名 | ||
int | xsd※1 | int | xsd※1 | int | xsd※1 | int | xsd※1 |
int | soapenc※2 | int | xsd※1 | int | soapenc※2 | int | soapenc※2 |
boolean | xsd※1 | boolean | xsd※1 | boolean | xsd※1 | boolean | xsd※1 |
boolean | soapenc※2 | boolean | xsd※1 | boolean | soapenc※2 | boolean | soapenc※2 |
byte | xsd※1 | byte | xsd※1 | byte | xsd※1 | byte | xsd※1 |
byte | soapenc※2 | byte | xsd※1 | byte | soapenc※2 | byte | soapenc※2 |
decimal | xsd※1 | decimal | xsd※1 | decimal | soapenc※2 | decimal | xsd※1 |
decimal | soapenc※2 | decimal | xsd※1 | decimal | soapenc※2 | decimal | soapenc※2 |
double | xsd※1 | double | xsd※1 | double | xsd※1 | double | xsd※1 |
double | soapenc※2 | double | xsd※1 | double | soapenc※2 | double | soapenc※2 |
float | xsd※1 | float | xsd※1 | float | xsd※1 | float | xsd※1 |
float | soapenc※2 | float | xsd※1 | float | soapenc※2 | float | soapenc※2 |
integer | xsd※1 | integer | xsd※1 | integer | xsd※1 | integer | xsd※1 |
integer | soapenc※2 | integer | xsd※1 | integer | soapenc※2 | integer | soapenc※2 |
long | xsd※1 | long | xsd※1 | long | xsd※1 | long | xsd※1 |
long | soapenc※2 | long | xsd※1 | long | soapenc※2 | long | soapenc※2 |
short | xsd※1 | short | xsd※1 | short | xsd※1 | short | xsd※1 |
short | soapenc※2 | short | xsd※1 | short | soapenc※2 | short | soapenc※2 |
string | xsd※1 | string | xsd※1 | string | xsd※1 | string | xsd※1 |
string | soapenc※2 | string | xsd※1 | string | soapenc※2 | string | soapenc※2 |