SoapNameSpace
使用法
メソッドが (Web メソッドとして使用される場合に) 使用する既定の XML ネームスペースをオーバーライドするには、以下の構文を使用します。
Method name(formal_spec) As returnclass [ SoapNameSpace = "soapnamespace", WebMethod ] { //implementation }
soapnamespace はネームスペース URI です。URI にコロン (:) が含まれる場合、文字列は引用符で囲む必要があります。つまり、次のように使用できます。
Method MyMethod() [ SoapNameSpace = "http://www.mynamespace.org", WebMethod ]
また、次のようにすることもできます。
Method MyMethod() [ SoapNameSpace = othervalue, WebMethod ]
ただし、次のようにはできません。
Method MyMethod() [ SoapNameSpace = http://www.mynamespace.org, WebMethod ]
手動で作成した Web サービスでは、通常はこのキーワードの既定値が最適な値となります。SOAP ウィザードで WSDL から Web クライアントまたは Web サービスを生成すると、このキーワードはその WSDL に最適に設定されます。この値を変更すると、Web クライアントまたは Web サービスは機能しなくなる場合があります。
詳細
このキーワードは、この Web メソッドが使用する XML ネームスペースを指定します。詳細は、"Caché での Web サービスおよび Web クライアントの作成" を参照してください。
このキーワードは、メソッドが RPC スタイルのバインディングを使用する場合にのみ有効です。つまり、メソッド (またはそれを含むクラス) は、SoapBindingStyle = rpc とマークする必要があります。(ドキュメント・スタイルのバインディングを使用するメソッドでこのキーワードを指定する場合、WSDL は自己矛盾したものになります。)
既定値
このキーワードを省略すると、メソッドは、Web サービスまたはクライアント・クラスの NAMESPACE パラメータで指定されるネームスペースに配置されます。
WSDL との関係
Caché Web サービスでは、SoapNameSpace キーワードは <definitions> 要素内のネームスペース宣言に影響します。指定したネームスペース (http://www.customtypes.org など) は、ここに追加されます。以下に例を示します。
...
xmlns:ns2="http://www.customtypes.org"
xmlns:s0="http://www.wsns.org"
...
targetNamespace="http://www.wsns.org"
この例では、http://www.customtypes.org ネームスペースは、接頭語 ns2 に割り当てられます。
WSDL でも、通常どおり、Web サービスのネームスペース (http://www.wsns.org) を宣言します。この例では、このネームスペースは接頭語 s0 に割り当てられ、ターゲットのネームスペースとしても使用されます。
SOAP メッセージへの影響
この SOAP メッセージは以下のようになります (読みやすいように、改行とスペースが追加されています)。
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:s='http://www.w3.org/2001/XMLSchema'
xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:tns='http://www.customtypes.org' >
<SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<tns:AddResponse>
<AddResult>42</AddResult>
</tns:AddResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<AddResponse> 要素は、http://www.webservicetypesns.org ネームスペース内にあります。
一方、SoapNameSpace キーワードを指定しない場合、メッセージは以下のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:s='http://www.w3.org/2001/XMLSchema'
xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:tns='http://www.wsns.org' >
<SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<tns:AddResponse>
<AddResult>42</AddResult>
</tns:AddResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
この場合、<AddResponse> 要素は Web サービスのネームスペース http://www.wsns.org に含まれます。
関連項目
-
このドキュメントの “メソッド定義”
-
Caché オブジェクトの使用法 の “メソッドの定義と呼び出し”
-
Caché オブジェクトの使用法 の “メソッド・ジェネレータとトリガ・ジェネレータの定義”
-
Caché オブジェクトの使用法 の “コンパイラ・キーワードの概要”