S2Axis 自動 BeanMapping

一応出来るようになりました.しかし...
今のやり方でいいのかはかなり怪しいです.Axis の実装を十分に理解できていないまま,「なんか出来たっぽい」という程度の感じ.
どうやら Axis の「サービス」を表現する

  • WSDDService
  • JavaServiceDesc
  • SOAPService

の関係,そして Java 型と XML 型のマッピング情報を保持する

  • TypeMappingRegistryImpl
  • TypeMappingImpl
  • DefaultSOAPEncodingTypeMappingImpl

などをちゃんと理解しないといけないっぽい.特に,TypeMappingdelegate ってのがどういう意味を持つのかがポイントになるかも.今のやり方だと JavaServiceDesc が持っている TypeMappingImplマッピングを追加してもうまくいかなくて,delegate 先の DefaultSOAPEncodingTypeMappingImplマッピングを追加することで結果オーライなのですが,これってサービス固有の TypeMapping じゃないような? うーみゅ...


ともあれ (JW),引数・戻り値型とも単純な JavaBeans なら特に TypeMapping を指定しなくても呼び出しが出来るようになったと思います.これで手軽に Web サービスを試すことができます.たいていの場合は

    <component name="foo" class="...">
        <meta name="s2axis:rpc-service"/>
    </component>

だけでもうまく動くはず.
でも,実際の開発で使う場合にそれでいいのかはちょっと疑問.というのも,これがうまくいくのはクライアントも Java (もしかしたら Axis のみ?) の場合だけだと思うからです.なんせ,Java 型の FQN から XML 型の QName を決定してますから.普通に考えたらこれは .NET との間では通用しないはず.まぁ,Java2WSDL してそれを .NET に食わせればいける気はしますが,どっちみち外で作られた WSDL をベースにする場合はダメですよね.
どうしたものか悩んでいたら,どうやら Axis の WSDL2Java は WSDL から WSDD も生成してくれるんですね.な〜るほどぉ.そこには必要な情報が全部揃ってるもんなぁ.
そんなわけで (どんなわけで?),S2Axis では WSDL2Java を拡張した WSDL2JavaAndDicon (?) を提供することにしたいと思います.こいつは WSDL から TypeMapping を含んだ dicon ファイルを生成します.WSDL2Java は拡張できるように作られているので,WSDD を生成する JavaDeployWriter をパクって JavaDiconWriter を作って登録すればうまくいくはず.
たぶん WSDL2JavaAndDicon は最後の方になると思うけど.(^^;