Webサービス/inter-operability
をテンプレートにして作成
Search in
this wiki
and
or
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
#br
** SOAPAction
SOAPリクエストのHTTPヘッダにSOAPActionというフィールド...
代表的な実装は、以下のような仕様になっています。
-プロバイダ(サーバ)側
--[[Apache Axis 1.1:http://ws.apache.org/axis/]]
---WSDL内のSOAPActionは""(0 length)となる。
---SOAPActionの無いリクエストはAxisFault(Client.NoSOAPAct...
--ASP.NET 1.1.4322
---WSDL内のSOAPActionはURI({targetNamespace} + {operation...
-リクエスタ(クライアント)側
--[[Apache Axis 1.1:http://ws.apache.org/axis/]]
---WSDLにSOAPActionの記述があれば、それをHTTPヘッダにつけ...
---WSDLにSOAPActionの記述が無ければ、""(0 length)のSOAPAc...
--ASP.NET 1.1.4322
---WSDLにSOAPActionの記述があれば、それをHTTPヘッダにつけ...
---WSDLにSOAPActionの記述が無ければ、""(0 length)のSOAPAc...
--Microsoft SOAP Toolkit (WindowsXPに内包)
---WSDLにSOAPActionの記述があれば、それをHTTPヘッダにつけ...
---WSDLにSOAPActionの記述が無いか""(0 length)ならば、HTTP...
上記の組み合わせのうち問題が発生するのは、Axis1.1とMicr...
*** SOAP1.2
SOAP1.1仕様はかなり曖昧で、異なる実装の相互接続性に問題...
<HTTPプロトコルバインディングヘッダ関連>
-''SOAPActionヘッダフィールドを削除''
-Content-Typeヘッダフィールドを" text/xml"から" applicati...
-HTTP拡張フレームワークを削除
<SOAPエンベロープ関連>
-''接頭辞:env''
-名前空間URL:http://www.w3.org/2002/06/soap-envelope
-Body要素の後にどんな要素も許可しない
<エンコーディングスタイル関連>
-env:encodingStyle属性は、ヘッダブロックおよびその子孫要...
<SOAPヘッダ関連>
-env:NotUnderstood見出し要素を追加
-mustUnderstand属性値は"1"または"0"、あるいは"true"または...
-env:actor属性をenv:role属性に変更(属性値に"none"と"ulti...
-env:relay属性を追加
<SOAPエンコーディング規則関連>
-接頭辞:enc
-名前空間URL:http://www.w3.org/2002/06/soap-encoding
-フォルトコードDataEncodingUnknownを追加
-href属性をenc:ref属性に変更
-enc:nodeType属性を追加
-itemType属性でデータ型を、arraySize属性でデータ数を指定
-エラー用フォルトサブコードenc:MissingID、enc:UntypedValu...
<RPC表現規則関連>
-接頭辞:rpc
-名前空間URL:http://www.w3.org/2002/06/soap-rpc
-rpc:result要素アクセサを追加
-フォルトコードを追加(rpc:ProcedureNotPresent、rpc:BadAr...
<その他>
-フォルトコードで、"クライアント"と"サーバ"を"送信者"と"...
-faultcodeをenv:Codeに、faultstringをenvReasonに変更
-env:Reason要素は、xml:lang属性を持ち、複数のenv:Text子要...
-env:Node要素env:Roleと要素を追加
-env:Details要素の有無はエラーの発生場所と関係がない
-相対的URL参照の基底URIを判別するのにXML Baseを利用する
*** Apache Axis1.1の実装
''Axis1.1はSOAP1.2準拠ではない''ということです。
Javaのクラスを適当に作って
%java org.apache.axis.wsdl.Java2WSDL -T 1.2 -A OPERATION...
としてwsdlファイルを作り、
%java org.apache.axis.wsdl.WSDL2Java -s -T 1.2 -t Test.w...
としてサーバ側およびテストクライアントを作成し、
%java org.apache.axis.client.AdminClient -l http://local...
としてDeployしたWebサービスのプロトコルログを見ても、
POST /axis/services/Test HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipar...
User-Agent: Axis/1.1
Host: localhost:8080
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "helloWorld"
Content-Length: 303
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap....
xmlns:xsd="http://www.w3.org/2001/XMLS...
xmlns:xsi="http://www.w3.org/2001/XMLS...
<soapenv:Body>
<helloWorld xmlns="http://test"/>
</soapenv:Body>
</soapenv:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml;charset=utf-8
Date: Sun, 04 Jan 2004 16:11:01 GMT
Server: Apache-Coyote/1.1
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap....
xmlns:xsd="http://www.w3.org/2001/XMLS...
xmlns:xsi="http://www.w3.org/2001/XMLS...
<soapenv:Body>
<helloWorldReturn xmlns="http://test">こんにちは、世界...
</soapenv:Body>
</soapenv:Envelope>
という具合になります。パッと見ただけでも
-Content-Typeが application/soap+xml になってない。
-接頭辞が enc になってない。
また、
-リクエストのHTTPヘッダにSOAPActionがないと、やっぱりAxis...
ということです。それとも、他に何か設定が?(^^;;~
現在Alpha版のAxis1.2からこの辺が改良されるのかな?
終了行:
#contents
#br
** SOAPAction
SOAPリクエストのHTTPヘッダにSOAPActionというフィールド...
代表的な実装は、以下のような仕様になっています。
-プロバイダ(サーバ)側
--[[Apache Axis 1.1:http://ws.apache.org/axis/]]
---WSDL内のSOAPActionは""(0 length)となる。
---SOAPActionの無いリクエストはAxisFault(Client.NoSOAPAct...
--ASP.NET 1.1.4322
---WSDL内のSOAPActionはURI({targetNamespace} + {operation...
-リクエスタ(クライアント)側
--[[Apache Axis 1.1:http://ws.apache.org/axis/]]
---WSDLにSOAPActionの記述があれば、それをHTTPヘッダにつけ...
---WSDLにSOAPActionの記述が無ければ、""(0 length)のSOAPAc...
--ASP.NET 1.1.4322
---WSDLにSOAPActionの記述があれば、それをHTTPヘッダにつけ...
---WSDLにSOAPActionの記述が無ければ、""(0 length)のSOAPAc...
--Microsoft SOAP Toolkit (WindowsXPに内包)
---WSDLにSOAPActionの記述があれば、それをHTTPヘッダにつけ...
---WSDLにSOAPActionの記述が無いか""(0 length)ならば、HTTP...
上記の組み合わせのうち問題が発生するのは、Axis1.1とMicr...
*** SOAP1.2
SOAP1.1仕様はかなり曖昧で、異なる実装の相互接続性に問題...
<HTTPプロトコルバインディングヘッダ関連>
-''SOAPActionヘッダフィールドを削除''
-Content-Typeヘッダフィールドを" text/xml"から" applicati...
-HTTP拡張フレームワークを削除
<SOAPエンベロープ関連>
-''接頭辞:env''
-名前空間URL:http://www.w3.org/2002/06/soap-envelope
-Body要素の後にどんな要素も許可しない
<エンコーディングスタイル関連>
-env:encodingStyle属性は、ヘッダブロックおよびその子孫要...
<SOAPヘッダ関連>
-env:NotUnderstood見出し要素を追加
-mustUnderstand属性値は"1"または"0"、あるいは"true"または...
-env:actor属性をenv:role属性に変更(属性値に"none"と"ulti...
-env:relay属性を追加
<SOAPエンコーディング規則関連>
-接頭辞:enc
-名前空間URL:http://www.w3.org/2002/06/soap-encoding
-フォルトコードDataEncodingUnknownを追加
-href属性をenc:ref属性に変更
-enc:nodeType属性を追加
-itemType属性でデータ型を、arraySize属性でデータ数を指定
-エラー用フォルトサブコードenc:MissingID、enc:UntypedValu...
<RPC表現規則関連>
-接頭辞:rpc
-名前空間URL:http://www.w3.org/2002/06/soap-rpc
-rpc:result要素アクセサを追加
-フォルトコードを追加(rpc:ProcedureNotPresent、rpc:BadAr...
<その他>
-フォルトコードで、"クライアント"と"サーバ"を"送信者"と"...
-faultcodeをenv:Codeに、faultstringをenvReasonに変更
-env:Reason要素は、xml:lang属性を持ち、複数のenv:Text子要...
-env:Node要素env:Roleと要素を追加
-env:Details要素の有無はエラーの発生場所と関係がない
-相対的URL参照の基底URIを判別するのにXML Baseを利用する
*** Apache Axis1.1の実装
''Axis1.1はSOAP1.2準拠ではない''ということです。
Javaのクラスを適当に作って
%java org.apache.axis.wsdl.Java2WSDL -T 1.2 -A OPERATION...
としてwsdlファイルを作り、
%java org.apache.axis.wsdl.WSDL2Java -s -T 1.2 -t Test.w...
としてサーバ側およびテストクライアントを作成し、
%java org.apache.axis.client.AdminClient -l http://local...
としてDeployしたWebサービスのプロトコルログを見ても、
POST /axis/services/Test HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipar...
User-Agent: Axis/1.1
Host: localhost:8080
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "helloWorld"
Content-Length: 303
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap....
xmlns:xsd="http://www.w3.org/2001/XMLS...
xmlns:xsi="http://www.w3.org/2001/XMLS...
<soapenv:Body>
<helloWorld xmlns="http://test"/>
</soapenv:Body>
</soapenv:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml;charset=utf-8
Date: Sun, 04 Jan 2004 16:11:01 GMT
Server: Apache-Coyote/1.1
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap....
xmlns:xsd="http://www.w3.org/2001/XMLS...
xmlns:xsi="http://www.w3.org/2001/XMLS...
<soapenv:Body>
<helloWorldReturn xmlns="http://test">こんにちは、世界...
</soapenv:Body>
</soapenv:Envelope>
という具合になります。パッと見ただけでも
-Content-Typeが application/soap+xml になってない。
-接頭辞が enc になってない。
また、
-リクエストのHTTPヘッダにSOAPActionがないと、やっぱりAxis...
ということです。それとも、他に何か設定が?(^^;;~
現在Alpha版のAxis1.2からこの辺が改良されるのかな?
ページ名: