Cosminexus SOAPアプリケーション開発ガイド
リモートインタフェースのメソッドのパラメタ,戻り値,またはこれらに指定するユーザ定義のデータ型クラス内で配列を使用できます。
配列を使用した場合,Java2WSDLコマンドおよびWSDL2Javaコマンド実行時に,"SequenceOf"で始まるデータ型クラスが生成されます。生成例を次に示します。
package localhost; public interface ArrayBank extends java.rmi.Remote{ public void sentArrayData( java.lang.String[] arrayData ) throws java.rmi.RemoteException; }
<wsdl:definitions xmlns:intf="http://localhost" targetNamespace="http://localhost" ... > ... <wsdl:types> <schema targetNamespace="http://localhost" xmlns="http://www.w3.org/2001/XMLSchema"> <complexType name="SequenceOf_xsd_string"> <sequence> <element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/> </sequence> </complexType> </schema> </wsdl:types> <wsdl:message name="sentArrayDataRequest"> <wsdl:part name="in0" type="intf:SequenceOf_xsd_string"/> </wsdl:message> <wsdl:message name="sentArrayDataResponse"> </wsdl:message> <wsdl:portType name="ArrayBank"> <wsdl:operation name="sentArrayData" parameterOrder="in0"> <wsdl:input message="intf:sentArrayDataRequest" name="sentArrayDataRequest"/> <wsdl:output message="intf:sentArrayDataResponse" name="sentArrayDataResponse"/> </wsdl:operation> </wsdl:portType> ... </wsdl:definitions>
package localhost; public interface ArrayBank extends java.rmi.Remote { public void sentArrayData(localhost.SequenceOf_xsd_string in0) throws java.rmi.RemoteException; }
package localhost; public class SequenceOf_xsd_string implements java.io.Serializable { private java.lang.String[] item; public SequenceOf_xsd_string() { } public SequenceOf_xsd_string( java.lang.String[] item) { this.item = item; } public java.lang.String[] getItem() { return item; } public void setItem(java.lang.String[] item) { this.item = item; } ... }
例えば,sentArrayDataメソッドに対して,{ "data1", "data2" }という配列を与える場合,次のようにSequenceOf_xsd_stringインスタンスを生成して呼び出します。
ArrayBankServiceLocator locator = new ArrayBankServiceLocator(); ArrayBank port = locator.getArrayBank(); SequenceOf_xsd_string in0 = new SequenceOf_xsd_string(); in0.setItem( new String[]{ "data1", "data2" } ); port.sentArrayData( in0 );
なお,配列を使用する場合,その配列が空である(要素数が0である)ことと,その配列がnullであることを区別することはできません。配列が空である場合も,配列がnullであるものとして扱われます。
また,例えば,sentArrayDataメソッドの第1引数をin0として,次のように生成したSequenceOf_xsd_stringインスタンスをクライアント側の実装で与えた場合,SOAPサービス側の実装のメソッド内で第1引数から取得できるin0に対し,getItemメソッドを呼び出した結果はどちらもnullです。
SequenceOf_xsd_string in0 = new SequenceOf_xsd_string(); in0.setItem( new String[]{} );
SequenceOf_xsd_string in0 = new SequenceOf_xsd_string(); in0.setItem( null );
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.