S2Axis の Axis 1.2RC3 対応

やってくれますなぁ.
コンパイルが通るようになっても,デプロイしたサービスが一覧に表示されなくて困っていたわけですが,原因判明.
従来,Web コンテナ上では Web アプリケーションごとに一つの AxisEngine が使われていたのですが,1.2RC3 からは Servlet ごとに一つの AxisEngine が使われるようになった模様.
んで,従来は ServletContext から "AxisEngine" という名前で getAttribute() していたのですが,これだと最初に初期化された ServletAxisEngine が取得できるだけで,それは S2AxisExamples だと AdminServletAxisEngine.でも外からのリクエストを受け取るのは AxisServlet だからそいつの AxisEngine にデプロイしなければ意味がないっつーことらしい.結局 "AxisServletAxisEngine" という名前で ServletContext#getAttribute() することで目的の AxisEngine に対してサービスがデプロイできるようになったよ.
そんなわけで (どんなわけで?),S2Axis 的にはデフォルトではまず "AxisServletAxisEngine" で,なければ "AxisEngine"ServletContext#getAttribute() することにしました.これを変更するには dicon ファイルで

<meta name="s2-axis:engine">servlet:MyServlet</meta>

という感じで指定できることにします.


これでデプロイしたサービスが一覧に復活したのでめでたしめでたしと思ったら一難去ってまた一難.(;_;)
今度はクライアント側.返値は取れるのですが,引数が渡らなくなってしまいました.しくしくしく.
どうやら,Call#addParameter() で明示的に引数の名前と型を指定しないといけないらしい.そうすると必然的に Call#setReturnType() も.やれやれ.
しょうがないので AxisConnector で設定してあげることにしました.


これでやっと S2AxisExamples が動きましたよ.
でも,AxisEngineServlet のあたりは 1.2RC3 のリリース後も修正が行われているみたいだし,1.2Final が出たらまた動かなくなるかも.
なので,RC3 対応版の S2Axis はリリースなしで.
一言,言ってもいいかなぁ? Axis きらーい.