Cosminexus SOAPアプリケーション開発ガイド
WSDLを生成および定義するときに注意が必要な内容について説明します。
WSDL2Javaコマンドを実行してソースコードを生成するときは,WSDL検証機能を有効にしてください。WSDL検証機能は,コマンド実行時に-Cオプションを指定することで有効にできます。
WSDL検証機能については,「9.2 WSDL2Javaコマンド(ソースコードの生成)」を参照してください。
Java2WSDLコマンドを実行してJavaインタフェースからWSDLを生成する場合,Javaインタフェースのメソッドのパラメタ名は,WSDLに「inXX」(XXは整数)の名称でマッピングされます。
Javaインタフェースおよび生成されるWSDLの例を示します。
package localhost; public interface UserInfo extends java.rmi.Remote { public String getUserData(String user_no1, String user_no2) throws java.rmi.RemoteException; }
... <wsdl:message name="getUserDataResponse"> </wsdl:message> <wsdl:message name="getUserDataRequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> </wsdl:message> <wsdl:portType name="UserInfo"> <wsdl:operation name="getUserData" parameterOrder="in0 in1"> <wsdl:input message="intf:getUserDataRequest" name="getUserDataRequest"/> <wsdl:output message="intf:getUserDataResponse" name="getUserDataResponse"/> </wsdl:operation> ...
次に示す文字は,WSDLのファイル名に使用できません。
? : * # % | < > “
WSDLを手動で定義する場合は,CosminexusでサポートしているWSDL1.1仕様の範囲で記述してください。CosminexusでサポートしているWSDL1.1仕様の範囲については「12.2 WSDL1.1との対応」を参照してください。
次に示す例のように,多段的にextension baseを使用した場合,多段的なcomplexType要素の一部が上位要素の属性とみなしたSOAPメッセージが送信されます。
<complexType name="arrayList"> <complexContent> <extension base="tns:list"> <sequence /> </extension> </complexContent> </complexType> <complexType name="list"> <complexContent> <extension base="tns:collection"> <sequence /> </extension> </complexContent> </complexType> <complexType name="collection"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="anyType[]" /> </restriction> </complexContent> </complexType>
<ns1:checkArrayList soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://testdata"> <in xsi:type="ns1:ArrayList"> <collection xsi:type="soapenc:Array" soapenc:arrayType="soapenc:string[2]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <item xsi:type="xsd:string">testdata</item> <item xsi:type="xsd:int">1</item> </collection> </in> </ns1:checkArrayList>
他社クライアントまたは他社サービスと通信するためのWSDL定義を作成する場合,双方で扱えるデータ型をWSDL定義に記述してください。
SOAP通信基盤で扱えるデータ型については,「12.2.3 XML Schemaのデータ型のサポート範囲」を参照してください。他社クライアントまたは他社サービスで扱えるデータ型については,各製品のマニュアルを参照してください。
データ型を派生させるために使用する,制限(restriction),ユニオン(union),およびリスト(list)の中で,SOAP通信基盤で有効になるのは制限(restriction)の列挙(enumeration)だけです。WSDL定義に派生データ型を定義する場合,またはWSDL定義からソースを生成する場合に,列挙(enumeration)以外は使用しないでください。列挙(enumeration)以外を使用した場合,指定値が有効にならなかったり,生成されたソースがコンパイルできなかったりする場合があります。
WSDL定義でnillable属性に"false"を指定した変数(データ型)にnullを設定しても,SOAPメッセージの送受信時エラーにはなりません。その場合,他社製品と通信できない場合があります。nullを指定した場合のSOAPメッセージの例を次に示します。
<変数名 xsi:nil="true"/>
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.