Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


10.5.3 non-wrapperスタイルの配列

次に示すJavaメソッドを持つSEIを起点に,Webサービスを開発することを想定します。このJavaメソッドは,non-wrapperスタイルで,java.lang.Stringクラスの配列のパラメタを持ちます。

@WebMethod
@javax.jws.soap.SOAPBinding(
  parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.BARE)
public String test1( String[] param1 );

この場合にマッピングされるWSDLの一部を次に示します。

...
<types>
  <xsd:schema targetNamespace="http://jaxb.dev.java.net/array">
    <xsd:complexType name="stringArray" final="#all">
      <xsd:sequence>
        <xsd:element name="item" type="xsd:string" minOccurs="0"
          maxOccurs="unbounded" nillable="true" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:schema>
 
  <xsd:schema targetNamespace="http://cosminexus.com/jaxws"
    xmlns:ns1="http://jaxb.dev.java.net/array">
    <xsd:element name="test1" nillable="true" type="ns1:stringArray"/>
    <xsd:element name="test1Response" nillable="true" type="xsd:string"/>
  </xsd:schema>
</types>
 
<message name="test1">
  <part name="test1" element="tns:test1" /> 
</message>
 
<message name="test1Response">
  <part name="test1Response" element="tns:test1Response" /> 
</message>
 
<portType ...>
  <operation name="test1">
    <input message="tns:test1" /> 
    <output message="tns:test1Response" /> 
  </operation>
  ...
</portType>
...

パラメタは,{http://jaxb.dev.java.net/array}stringArray型のwrapper子要素にマッピングされます。

このWSDLを指定してcjwsimportコマンドを実行すると,生成されるサービスクラスのJavaメソッドは次のようになります。

@WebMethod
@javax.jws.soap.SOAPBinding(
  parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.BARE)
public String test1(net.java.dev.jaxb.array.StringArray test1);

{http://jaxb.dev.java.net/array}stringArray型のwrapper子要素は,net.java.dev.jaxb.array.StringArrayクラスにマッピングされます。