[Seasar-user:4867] Re: 暫定版を利用した動作を確認しました

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2006年 10月 23日 (月) 21:00:39 JST


小林 (koichik) です.

Date:    Mon, 23 Oct 2006 18:07:51 +0900
From:    [E-MAIL ADDRESS DELETED]
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:4865] 暫定版を利用した動作を確認しました

> 前者のみですが、こちらでも動作を確認しました。
> 確かに、期待通りの結果を得られています。

ご確認ありがとうございました.

>  # なお、クライアント・サーバ側共に、dicon ファイルに
>  # Map のタイプマッピング定義を記述しなくても、正常に
>  # Map の値が送受信できることも確認できています。

まさか?
と思って調べてみたら,確かにできちゃいますね.(^^;
気づきませんでした.心より恥じる.

> > これで問題がなければ S2Axis-1.0.3 としてリリースします.
> 
> そうして頂けると幸いです。よろしくお願いします。

ちょっと気になるコメントを頂いたので,リリース前に確認を
させてください.
以下の点ですが...

> > >    ・受信時
> > >     Map の持つ値の型が、base64Binary となっている。
> > >     受信すると、空文字として受け取ってしまう。
> > 
> > これはおそらく,Axis の問題ではないかと思います.
> 
> 実は、Axis 単体での動作確認を行った際に、
> 
>  TypeMappingDelegate#setDoAutoTypes(true);
> 
> を行っていました。
> もちろん、これによる JavaBeans のタイプマッピング定義なしでの
> 送受信の動作も確認できています。
> (同時に Map を送受信しても、正常な動作を確認できました)
> 
> なので、恐らく Axis 側には問題はないのでは、と考えています。

Axis を WSDD で標準的にデプロイした場合,WSDDService によって
次のような TypeMappingDelegate のチェーンが構成されます.

エンコーディングスタイルが
http://www.w3.org/2003/05/soap-encoding
                        next
TypeMappingDelegate(1) -----> TypeMappingDelegate(2)
  └TypeMappingImpl(1)          └TypeMappingImpl(2)

この場合,String を含む標準的なタイプマッピングは
TypeMappingImpl(1) に登録され,これの doAutoTypes を
true にしても Bean・Map ともに問題はありません.
ただし,TypeMappingImpl(2) に登録されている型を Map の
エントリで使用すると問題があると思われます.

一方,エンコーディングスタイルが
http://schemas.xmlsoap.org/soap/encoding/
                        next                          next
TypeMappingDelegate(1) -----> TypeMappingDelegate(2) -----> TypeMappingDelegate(3)
  └TypeMappingImpl(1)          └TypeMappingImpl(2)          └TypeMappingImpl(3)

この場合,String を含む標準的なタイプマッピングは
TypeMappingImpl(2) に登録されます.
ここで TypeMappingImpl(1) の doAutoTypes を true にすると,
報告を頂いたように Map のエントリである String のエンコードが
base64Binary で行われてしまいます.
TypeMappingImpl(1) ではなく,TypeMappingImpl(2) の
doAutoTypes を true にすると Map は適切に扱えるように
なりますが,Bean の配列が Object の配列としてエンコード
されてしまうという問題があります.


坪内さんが Axis 単体で確認した際は,どちらのエンコーディング
スタイルを使いましたか?
その際の TypeMappingDelegate の構成がどうなっていて,
doAutoTypes を true に設定した TypeMappingImpl が
どの位置のものか,教えて頂けないでしょうか.
よろしくお願いします.


-- 
<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 メーリングリストの案内