リモートインタフェースのメソッドのパラメタ,戻り値,またはこれらに指定するユーザ定義のデータ型クラス内で配列を使用できます。
配列を使用した場合,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 );