[Seasar-user:17240] Re: [S2JDBC][S2JDBC-Gen]getResultListを配列型に格納する方法

山田 祐己 [E-MAIL ADDRESS DELETED]
2009年 4月 10日 (金) 10:34:53 JST


小林様

いつもお世話になります。山田です。

> Axis (おそらく Axis2 でも) では List は
> SOAP の配列としてエンコーディングするので,
> .NET との相互運用でも問題ないはずです.
>
>   
すみません。Axis2で進めています。
確かに、実際に実際にSOAPクライアントからの要求の返信は
ご案内の通りですが、WSDLではそうなっていないのです。

productService?wsdlより抜粋(Axis2)
-----
<xs:element name="getProductsResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProductsArrayResponse">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return"
nillable="true" type="ns1:Product"/>
</xs:sequence>
</xs:complexType>
</xs:element>
-----
getProductsResponseは、List<Product> getProductsメソッドの戻り値
getProductsArrayResponseは、Product[] getProductsArrayメソッドの戻り値
※productService.xmlを添付しました。

この為に、WSDL2Javaで生成されたスタブでは
getProductsの結果を正しく受け取れない状況でした。
ここは、S2Axis2の問題ではなく、Axis2側の問題ですよね。
実際のurlダイレクトで出力されるSOAP仕様は使用せずに
ローカルに落して、カスタマイズしてからSOAP仕様を公開すれば
解決しますが、別管理を避けたい思いがありました。

> なお,Map (Collection ではない) は使わない方が
> いいようです.
>
>   
有難う御座います、参考に致します。

>> そこで、getResultListの結果を配列で受け取るメソッドがあると
>> 有りがたいのですが有りますでしょうか。
>>     
>
> ありません.
> もし提供するとしても ArrayList#toArray(T[]) を
> 呼び出すしかないので,アプリ側でやっても同じです.
>
>   

ご指摘の通りです。
どちらかと言うと、S2JDBC-Gen側のオプションに有れば、
有難いと言うレベルでした。
toArray自体程度は、自前で何とか致します。

いつも有難う御座います。
今後とも、ご指導の程、宜しくお願いいたします。

山田 祐己(Yuki Yamada)
E-Mail [E-MAIL ADDRESS DELETED]

-------------- next part --------------
A non-text attachment was scrubbed...
Name: productService.xml
Type: text/xml
Size: 15010 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20090410/81dc7682/attachment.xml>


Seasar-user メーリングリストの案内