SOAPを利用してISI呼び出しを行うアプリケーションは、次の条件を満たすWebサービスクライアントとして作成します。
<J2EE実行環境の場合>
WS-I Basic Profile 1.0に準拠していること
添付ファイルを扱う場合、WS-I Attachment Profile 1.0に準拠していること
WSDLエクスポート機能を利用すれば、XMLスキーマファイルをもとにISIで作成したSOAPメッセージ受信用定義に対応したWSDLを自動で生成できるため、容易にISI呼び出しを行うアプリケーションを作成できます。WSDLエクスポート機能の利用方法は、“ISI Studio ヘルプ”の“サービスエンドポイントからWSDLを生成する”を参照してください。
<Java EE実行環境の場合>
SOAP1.1、および、SOAP1.2に準拠していること
添付ファイルを扱う場合、MTOM/XOPに準拠していること
SOAP1.1では、HTTPヘッダのContent-typeの値を“text/xml”、SOAP1.2では、HTTPヘッダのContent-typeの値を“application/soap+xml”とする必要があります。MTOM/XOPに準拠した添付ファイルを扱う場合、HTTPヘッダのContent-typeの値は“multipart/related”、Content-typeのstart-info属性の値は、SOAP1.1では“text/xml”、SOAP1.2では“application/soap+xml”とする必要があります。
Webサービスクライアントがすでに存在する場合
アプリケーションの開発は不要で、送信先URLをISIのSOAPアダプタにすることでISIを呼び出すことができます。送信先URLは以下の形式になります。
URLに日本語が含まれている場合、またはクエリストリングで指定するサービスエンドポイント名が日本語の場合は呼び出せません。
<J2EE実行環境の場合>
サービスエンドポイント名指定によるISI呼出し
サービス利用側からURLの後ろ(斜体部分)のクエリストリングでサービスエンドポイント名を付加した送信先に、SOAPメッセージを送信します。
http://ホスト名:ポート番号/esisoap/ESISoapMsgServer?サービスエンドポイント名
例)
ホスト名:MyHost
ポート番号:省略(80)
サービスエンドポイント名:endpoint01
http://MyHost/esisoap/ESISoapMsgServer?endpoint01
インバウンドルーティングを行うISI呼出し
サービス利用側からクエリストリングなしのURLにSOAPメッセージを送信します。
http://ホスト名:ポート番号/esisoap/ESISoapMsgServer
例)
ホスト名:MyHost
ポート番号:省略(80)
http://MyHost/esisoap/ESISoapMsgServer
<Java EE実行環境の場合>
サービスエンドポイント名指定によるISI呼出し
サービス利用側からURLの後ろ(斜体部分)のクエリストリングでサービスエンドポイント名を付加した送信先に、SOAPメッセージを送信します。
http://ホスト名:ポート番号/esisoap_ISI実行環境名/ESISoapMsgServer?サービスエンドポイント名
例)
ホスト名:MyHost
ポート番号:省略(80)
ISI実行環境名:Unit01
サービスエンドポイント名:endpoint01
http://MyHost/esisoap_Unit01/ESISoapMsgServer?endpoint01
インバウンドルーティングを行うISI呼出し
サービス利用側からクエリストリングなしのURLにSOAPメッセージを送信します。
http://ホスト名:ポート番号/esisoap_ISI実行環境名/ESISoapMsgServer
例)
ホスト名:MyHost
ポート番号:省略(80)
ISI実行環境名:Unit01
http://MyHost/esisoap_Unit01/ESISoapMsgServer
Java EE実行環境の場合は、esisoap_の接頭語の後に、ISI実行環境名を指定してください。
Webサービスクライアントを開発する場合
ISIのWSDLエクスポート機能でWSDLファイルを生成し、WSDLファイルからWebサービスクライアントを生成する機能を用いて開発を行います。WSDLファイルからWebサービスクライアントを生成する機能はInterstage Application Serverの“iswsgen”コマンドやApache Axisなどがあります。
エラー発生時の動作
<J2EE実行環境の場合>
ISIサーバでエラーが発生した場合、以下の形式のSOAPFaultを返却します。
項目名 | 設定値 |
---|---|
faultcode | soapenv:Server |
faultstring | エラー原因 |
SOAPFaultの例を示します。
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server</faultcode> <faultstring>errorcode=SOAP-MSG-41002, message=サービスエンドポイント情報が取得できませんでした。[サービスエンドポイント名=xxx]</faultstring> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> |
<Java EE実行環境の場合>
ISIサーバでエラーが発生した場合、以下の形式のSOAPFaultを返却します。
SOAP1.1のメッセージ形式の場合
項目名 | 設定値 |
---|---|
faultcode | soapenv:Server |
soapenv:VersionMismatch | |
faultstring | エラー原因 |
SOAP1.2のメッセージ形式の場合
項目名 | 設定値 |
---|---|
Code | env:Receiver |
env:VersionMismatch | |
Reason | エラー原因 |
SOAPFaultの例を示します。
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Receiver</env:Value> </env:Code> <env:Reason> <env:Text xml:lang="ja">ISI Sequence error occurred. errorcode=SEQ-ENGINE-50008, sequence name=seq, step name=SyncServiceCall1, message id=ESI-seq-20120614102611904-69440</env:Text> </env:Reason> </env:Fault> </env:Body> </env:Envelope> |
ISIサーバでエラーが発生した場合、サービス利用側からリクエストされたSOAPメッセージと同じSOAPバージョンのSOAPFaultを返却します。
ただし、リクエストのSOAPメッセージのSOAPバージョンが1.1で、SOAPメッセージを受信するノード(インバウンドのSOAPアダプタ)のSOAPバージョンが1.2の場合、World Wide Web Consortium(W3C)の規約に従いSOAP1.1のSOAPFaulを返却します。なお、リクエストメッセージのSOAPバージョンが特定できない場合は、最も小さいSOAPバージョンでSOAPFaultを返却します。
リクエストメッセージの SOAPバージョン | サービスエンドポイント定義の SOAPバージョン | 返却されるSOAPFaultの SOAPバージョン |
---|---|---|
不明なバージョン | 不明なバージョン | バージョン1.1 |
バージョン1.1 | バージョン1.1 | |
バージョン1.2 | バージョン1.1 | |
バージョン1.1 | 不明なバージョン | バージョン1.1 |
バージョン1.1 | バージョン1.1 | |
バージョン1.2 | バージョン1.1 | |
バージョン1.2 | 不明なバージョン | バージョン1.2 |
バージョン1.1 | バージョン1.1 | |
バージョン1.2 | バージョン1.2 |