- - PR -
WebサービスのtypeMappingについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-14 18:37
こんにちわ。
現在、Webサービスを習熟中ですが一点質問させてください。 j2sdk1.4 tomcat5.0 apacheaxis1.1 HashMapをクライアント・サーバ間でやり取りを行いたいのですが typeMappingでつまづいてしまいます。 HashMapを引数にしたサービスを作成し、デプロイすると 以下のようなwsdlが生成されます(一部抜粋) - <wsdl:types> - <schema targetNamespace="http://xml.apache.org/xml-soap" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> - <complexType name="mapItem"> - <sequence> <element name="key" nillable="true" type="xsd:string" /> <element name="value" nillable="true" type="xsd:string" /> </sequence> </complexType> - <complexType name="Map"> - <sequence> <element maxOccurs="unbounded" minOccurs="0" name="item" type="apachesoap:mapItem" /> </sequence> </complexType> </schema> </wsdl:types> ここでHashMapに対する定義が二つに分かれています。 MapとmapItemです。 関係はなんとなく理解できますが。 そして、クライアント(.NET)からプロキシを作成し、アクセス すると以下のエラーが出ます。 org.xml.sax.SAXException: No deserializer for {http://xml.apache.org/xml-soap}mapItem デプロイに使用したwsddのtypeMapping設定ではMapSerializerの設定しか 記述していません。 従って、mapItemの記述もしないといけないのかな、となんとなくは 思っているのですが、納得もいきません。 というのは、mapItemのtypeMapping設定をするとしたら、一体何の Serializerを使用すればいいのかがわかりません。BeanSerializer でしょうか。 BeanSerializerならば、mapItemクラスが必要になるはずですが そんなクラスは作っていません。まさか作らなくちゃいけない のでしょうか? webサービスでHashMapをやり取りする場合、私が行った上記設定 以外に何か設定が必要でしょうか? | ||||
|
投稿日時: 2004-10-15 17:51
本来ならばweblogic8を使用することになるのですが
そちらの情報でもいいのでお持ちの方はいらっしゃ らないでしょうか。 weblogic8の場合は、マニュアルを見る限り、サポート される非組み込み型にMapがないのですが、この場合 はシリアライザーを自分で作成しなければならないの でしょうか? | ||||
|
投稿日時: 2004-10-20 12:54
下記サイトに「NET ではハッシュテーブルを扱うことができません。」との記述がありました。
http://ws.apache.org/~toshi/jp-site/axis/java/user-guide.html
HashMapの変わりにJavaBeanクラスを作成し、BeanSerializerにて動作させるのはどうでしょうか? JavaBeanクラスを配列にすれば、HashMapと大差はなくなるかと思います。 簡単な例が下記サイトにありますので、ご参照下さい。 http://www.webcom-corp.co.jp/project/project_java/021118/tips0002.html | ||||
|
投稿日時: 2004-10-20 14:45
こんにちわ。
実機ではWebLogic8.1を使用する予定ですが こちらでもHashMapなどのMap系はサポート されていませんでした。 AxisではBeanSerializerなる便利なクラスが ありますが、WebLogicでは自作Beanを使用する 場合はSeriarizerを作成する必要があるみたいです。 結構めんどくさいのでListでも使おうかと考え中です。 |
1