ネームスペースの割り当てを制御するパラメータとキーワード
SOAP ウィザードは、生成されたクラスに、ネームスペース割り当てを制御するためのパラメータとキーワードを使用します。以下のサブセクションでは、メッセージのネームスペースとタイプのネームスペースについて説明します。
Web クライアントまたは Web サービスが WSDL に従わなくなるため、これらの値は変更しないでください。SoapNameSpace および SoapTypeNameSpace の詳細は、"クラス定義リファレンス" を参照してください。
メッセージのネームスペース
SOAP ウィザードでは、次の値を指定して、SOAP メッセージで使用されるネームスペースを制御します。
Web クライアントまたは Web サービスによって送信される SOAP メッセージのネームスペース
アイテム |
SOAP ウィザードで指定される値 |
NAMESPACE (クラス・パラメータ) |
すべての要求メッセージで同一のネームスペースが使用される場合の要求メッセージのネームスペース。 |
SoapNameSpace (メソッド・キーワード) |
各要求メッセージで異なるネームスペースが使用される場合の各要求メッセージのネームスペース。 |
RESPONSENAMESPACE (クラス・パラメータ) |
応答メッセージのネームスペース。これを指定しないと、応答メッセージは NAMESPACE パラメータで指定されるネームスペースに配置されます。SoapNameSpace キーワードは、応答メッセージのネームスペースに影響を及ぼすことはありません。 |
タイプのネームスペース
SOAP ウィザードでは、次に示すように、メッセージ・タイプがネームスペースに自動的に割り当てられます。
Web クライアントおよび Web サービスで使用されるタイプのネームスペース
アイテム |
SOAP ウィザードで指定される値 |
TYPENAMESPACE (クラス・パラメータ) |
すべてのメソッドが同一のネームスペースのタイプを参照する場合に、SOAP ウィザードによってこのパラメータが設定されます。 |
RESPONSETYPENAMESPACE (クラス・パラメータ) |
SOAP ウィザードでは、WSDL がドキュメントスタイルのバインディングを使用し、応答メッセージが要求メッセージとは異なるネームスペースのタイプを使用する場合に、このパラメータが設定されます。このパラメータは、クラスのすべてのメソッドに適用されます。応答タイプはすべて、相互に同一のネームスペースに属すると見なされます。 |
SoapTypeNameSpace (メソッド・キーワード) |
<s:schema> 要素の targetNamespace 属性の値。各メソッドが異なるネームスペースのタイプを使用している場合に、SOAP ウィザードによって、メソッドごとにこのキーワードが設定されます。
このキーワードは、RESPONSETYPENAMESPACE パラメータをオーバーライドしません。 |
配列プロパティの作成
既定では、特定のシナリオで、SOAP ウィザードによって配列型プロパティが作成されます。[配列プロパティ以外を作成] オプションを使用すると、別の構造を持つプロパティを必要に応じて作成できます。
具体的には、以下のタイプを含む WSDL を考えてみます。
<s:complexType name="Obj">
<s:sequence>
<s:element minOccurs="0" name="MyProp" type="test:Array"/>
</s:sequence>
</s:complexType>
<s:complexType name="Array">
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="0" name="Item" nillable="true" type="test:Item"/>
</s:sequence>
</s:complexType>
<s:complexType name="Item">
<s:simpleContent>
<s:extension base="s:string">
<s:attribute name="Key" type="s:string" use="required"/>
</s:extension>
</s:simpleContent>
</s:complexType>
既定では、SOAP ウィザードによって以下のクラスが生成されます。
Class testws.Obj Extends (%RegisteredObject, %XML.Adaptor)
{
Parameter ELEMENTQUALIFIED = 1;
Parameter NAMESPACE = "http://testws.org";
Parameter XMLNAME = "Obj";
Parameter XMLSEQUENCE = 1;
Property MyProp As array Of %String(MAXLEN = "", XMLITEMNAME = "Item",
XMLKEYNAME = "Key", XMLNAME = "MyProp", XMLPROJECTION = "COLLECTION");
}
SOAP ウィザードを使用する際に [配列プロパティ以外を作成] を選択すると、生成された Obj クラス内の MyProp プロパティが代わりに以下のように定義されます。
Property MyProp As list Of testws.Item(XMLITEMNAME = "Item", XMLNAME = "MyProp", XMLPROJECTION = "COLLECTION");
このプロパティは、SOAP ウィザードによって同様に生成された以下のクラスを参照します。
Class testws.Item Extends (%SerialObject, %XML.Adaptor)
{
Parameter ELEMENTQUALIFIED = 1;
Parameter NAMESPACE = "http://testws.org";
Parameter XMLNAME = "Item";
Parameter XMLSEQUENCE = 1;
Property content As %String(MAXLEN = "", XMLNAME = "content", XMLPROJECTION = "CONTENT");
Property Key As %String(MAXLEN = "", XMLNAME = "Key", XMLPROJECTION = "ATTRIBUTE")
[ Required, SqlFieldName = _Key ];
}