リモートインタフェースのメソッドのパラメタに,INOUTパラメタを格納するためにHolderクラスを使用できます。リモートインタフェースのメソッドのパラメタ以外ではHolderクラスは使用できません。
Holderクラスの生成例,および使用できないHolderクラスの用途の例を示します。
package localhost;
public interface HolderTest extends java.rmi.Remote{
public void test( javax.xml.rpc.holders.StringHolder inout ) throws java.rmi.RemoteException;
}
<wsdl:definitions targetNamespace="http://localhost" ... >
...
<wsdl:message name="testRequest">
<wsdl:part name="in0" type="xsd:string"/>
</wsdl:message>
<wsdl:message name="testResponse">
<wsdl:part name="in0" type="xsd:string"/>
</wsdl:message>
<wsdl:portType name="HolderTest">
<wsdl:operation name="test" parameterOrder="in0">
<wsdl:input message="intf:testRequest" name="testRequest"/>
<wsdl:output message="intf:testResponse" name="testResponse"/>
</wsdl:operation>
</wsdl:portType>
...
</wsdl:definitions>
Holderクラスは,リモートインタフェースのメソッドのパラメタだけに使用できます。メソッドの戻り値,配列の要素,およびユーザ定義のデータ型クラスのフィールドでは使用できません。
次に示す例を含む,リモートインタフェースのメソッドのパラメタ以外の用途に使用しないでください。
package localhost;
public interface HolderTest extends java.rmi.Remote{
public javax.xml.rpc.holders.StringHolder test() throws java.rmi.RemoteException;
}
package localhost;
public interface HolderTest extends java.rmi.Remote{
public void test( javax.xml.rpc.holders.StringHolder[] inout ) throws java.rmi.RemoteException;
}
package localhost;
public interface HolderTest extends java.rmi.Remote{
public void test( localhost.UserData data ) throws java.rmi.RemoteException;
}
package localhost;
public class UserData implements java.io.Serializable {
public javax.xml.rpc.holders.StringHolder value;
}
このような使い方をした場合,開発支援コマンドがKDCCC0012-Eのエラーメッセージを出力して終了したり※1,通信時にC4Fault例外※2,またはRemoteException例外※3が発生したりすることがあります。