SOAPアプリケーション運用時の注意事項について説明します。
SOAP通信基盤では,多重配列のデータ型を通信する場合,次に示すようなSOAPメッセージが送受信されます。他社製品と接続する場合は,この形式が扱えるかどうかを確認して,多重配列のデータ型を送受信してください。他社製品と通信できない場合があります。
<in xsi:type="soapenc:Array" soapenc:arrayType="ns1:UserData[][2]"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<item xsi:type="soapenc:Array"
soapenc:arrayType="ns1:UserData[3]">
<item xsi:type="ns1:UserData">
<Key xsi:type="xsd:string">key00</Key>
<Value xsi:type="xsd:string">value00</Value>
</item>
<item xsi:type="ns1:UserData">
<Key xsi:type="xsd:string">key01</Key>
<Value xsi:type="xsd:string">value01</Value>
</item>
<item xsi:type="ns1:UserData">
<Key xsi:type="xsd:string">key02</Key>
<Value xsi:type="xsd:string">value02</Value>
</item>
</item>
<item xsi:type="soapenc:Array"
soapenc:arrayType="ns1:UserData[3]">
<item xsi:type="ns1:UserData">
<Key xsi:type="xsd:string">key10</Key>
<Value xsi:type="xsd:string">value10</Value>
</item>
<item xsi:type="ns1:UserData">
<Key xsi:type="xsd:string">key11</Key>
<Value xsi:type="xsd:string">value11</Value>
</item>
<item xsi:type="ns1:UserData">
<Key xsi:type="xsd:string">key12</Key>
<Value xsi:type="xsd:string">value12</Value>
</item>
</item>
</in>
SOAPサービスから返されるFaultメッセージには,faultactor要素は含まれません。ただし,ユーザ実装でfault生成者を指定したC4Fault例外をスローした場合は除きます。
SOAPヘッダ要素に関係するエラーによって,SOAPサービスからFaultメッセージが返される場合,返されるFaultメッセージは<detail/>を含む場合があります。また,SOAPボディ要素に関係するエラーによって,SOAPサービスからFaultメッセージが返される場合,ユーザ実装でFault詳細を指定したC4Fault例外をスローした場合を除いて,返されるFaultメッセージにdetail要素は含まれません。
SOAPでは,Client,Server,VersionMismatch,MustUnderstandの四つのfaultcodeを定めていますが,SOAP通信基盤ではVersionMismatch,MustUnderstandだけ使用します。Client,Serverに代わるfaultcodeとして,SOAP通信基盤独自の名前空間(http://c4web.cosminexus.com)を持つClient,Serverを使用します。また,これらSOAP通信基盤独自のfaultcodeは,ドット表記による詳細コードを持つものがあります。
リクエストのメッセージがHTTPリクエストとして正しい形式ではない,またはXMLが整形式(well-formed)ではないメッセージを受信した場合,HTTP状態コードとして"400 Bad Request"を返します。その時,faultメッセージも送信しますので,他社製品と接続するときは注意してください。他社製品と通信できない場合があります。
SOAPサービスが動作する環境(URL)でCosminexusが提供するエラーページの委任機能を使用する場合,SOAPサービスが動作するURLに対しては,エラーコード500のエラーページ委任機能を設定しないようにしてください。
SOAPでは,SOAPサービスでエラーが発生した場合に,SOAP Fault電文を作成し,エラーコード500でSOAPクライアントに返信します。そのため,エラーページ委任機能で,エラーコード500を委任すると,プロトコル違反となり,SOAPクライアント側に不正な電文が送信されることになります。
なお,プロトコル違反のSOAP Fault電文をSOAPクライアントが受け付けた場合の動作については,SOAPクライアント開発元に確認してください。エラーページ委任機能については,マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。
SOAPクライアント,およびSOAPサービスを,Cosminexusが提供するデフォルトマッピングで呼び出さないでください。SOAPエンジン,またはSOAPクライアントライブラリが予期しない動作をするおそれがあります。サーブレットのデフォルトマッピングについては,マニュアル「Cosminexus アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」を参照してください。
SOAPアプリケーションをCosminexusが提供するリロード機能で入れ替えないでください。正しくアプリケーションが入れ替わらない場合があります。リロード機能については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。
SOAP通信基盤では,SOAP FaultやC4Fault例外が発生した場合など,異常を検出した場合にアプリケーションログを出力する機能を動作定義オプションで指定できます。障害発生時のトラブルシュート機能を強化するため,SOAP通信基盤の動作定義オプションを使用することを強く推奨します。なお,動作定義ファイルの設定方法については,「10. 動作定義ファイルおよび実行時オプションの設定項目」を参照してください。
SOAPアプリケーションの開発時に作成するDD(web.xml)ファイルの記述については,「3.9.2 DD(web.xml)の記述」を参照してください。
旧バージョンの環境で開発したSOAPアプリケーションを利用する場合,移行手順に従い,SOAPアプリケーションを移行する必要があります。移行手順については,「付録A SOAPアプリケーションの移行」を参照してください。
受信したマルチパートメッセージの最初にSOAPEnvelopeが含まれない場合,SOAPEnvelopeより前に位置する添付データに対して,受信時サイズチェック機能が機能しません。
UTF-16でエンコードしたSOAPメッセージを受信した場合,予期しないエラーまたは例外が発生することがあります。UTF-16ではなく,UTF-8を使用するようにしてください。
インプロセスHTTPサーバを使用している場合,J2EEサーバを停止しようとしても停止しないか,停止までに長時間掛かることがあります。
これは,次の条件がすべて重なる場合に発生します。
設定内容および停止方法ごとに,発生する可能性のある現象を次に示します。
cjstopsvコマンド実行時にKDJE39514-Wが出力されて,J2EEサーバの停止に時間が掛かる場合は,cjstopsvコマンドに-fオプションを付けて再度実行し,J2EEサーバを停止してください。
Management Serverを使用して停止した場合,停止監視時間を設定しているときは,停止監視時間が経過すると強制停止されます。停止監視時間を設定していないときは,次の手順でJ2EEサーバを停止してください。