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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 4月 9日 (木) 18:00:20 JST


小林 (koichik) です.

Date:    Thu, 09 Apr 2009 11:31:04 +0900
From:    山田 祐己 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17236] [S2JDBC][S2JDBC-Gen]getResultListを配列型に格納する方法

> その際に、現状課題となっているのが、List型で戻る
> getResultListメソッドです。
> このメソッドは、S2Axis経由であれば、何の問題の無いのですが、
> 「.netからはList型で受け取れないし、SOAP標準外では」、との
> 指摘を受けました。
> 
> 確かに、.netでコレクションクラスをSOAPで受け取れないと
> 聞いた事が有るのですが、SOAP標準外か迄は、まだ勉強
> 不足で確認できて居ない状況です。
> ただ結論だけは、公開するSOAP仕様には、確実に扱える配列での
> I/Fを模索する方向で進めております。

Axis (おそらく Axis2 でも) では List は
SOAP の配列としてエンコーディングするので,
.NET との相互運用でも問題ないはずです.

例えば Axis の 
org.apache.axis.encoding.DefaultSOAPEncodingTypeMappingImpl#registerSOAPTypes()

        myRegister(Constants.SOAP_ARRAY12,     java.util.Collection.class,
                   new ArraySerializerFactory(),
                   new ArrayDeserializerFactory()
        );
        myRegister(Constants.SOAP_ARRAY12,     java.util.ArrayList.class,
                   new ArraySerializerFactory(),
                   new ArrayDeserializerFactory()
        );

        myRegister(Constants.SOAP_ARRAY12,     Object[].class,
                   new ArraySerializerFactory(),
                   new ArrayDeserializerFactory()
        );

というように,ArrayList やその他の Collection も
配列と同じ SOAP1.2 の配列にマッピングされています.

なお,Map (Collection ではない) は使わない方が
いいようです.

> そこで、getResultListの結果を配列で受け取るメソッドがあると
> 有りがたいのですが有りますでしょうか。

ありません.
もし提供するとしても ArrayList#toArray(T[]) を
呼び出すしかないので,アプリ側でやっても同じです.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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