S2Axis の Axis 1.2RC3 対応
やってくれますなぁ.
コンパイルが通るようになっても,デプロイしたサービスが一覧に表示されなくて困っていたわけですが,原因判明.
従来,Web コンテナ上では Web アプリケーションごとに一つの AxisEngine
が使われていたのですが,1.2RC3 からは Servlet
ごとに一つの AxisEngine
が使われるようになった模様.
んで,従来は ServletContext
から "AxisEngine"
という名前で getAttribute()
していたのですが,これだと最初に初期化された Servlet
の AxisEngine
が取得できるだけで,それは S2AxisExamples だと AdminServlet
の AxisEngine
.でも外からのリクエストを受け取るのは 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 が動きましたよ.
でも,AxisEngine
と Servlet
のあたりは 1.2RC3 のリリース後も修正が行われているみたいだし,1.2Final が出たらまた動かなくなるかも.
なので,RC3 対応版の S2Axis はリリースなしで.
一言,言ってもいいかなぁ? Axis きらーい.