axis2、ログ

再び仕事でaxis2をさわる。
書きたい点はいろいろあれど今回はログ出力について。


wsdl2javaコマンドでコードを自動生成するとサービスアーカイブを生成するためのbuild.xmlも生成されるが、これを実行してもなぜかソースフォルダにあるlog4j.propertiesがアーカイブに入らない。
理由は良くわからないが、ファイルをbuild/classesフォルダに手でコピーするとアーカイブに入るようになる。


さらに、サービスアーカイブの中にjarファイルを入れる方法。
build.xmlのjarタスクを見てみるとclassフォルダしか入れてないようなのでbuild/lib/lib/*.jarも入れるように変更する。

だったかな?
必要なjarはやはり事前にbuild/lib/libに入れておく。
サービスアーカイブを展開する部分のソースを見ると、アーカイブ内のパスがlib/で始まるjarファイルをクラスパスとして使用している。


このようにしてサービスアーカイブにログ出力に必要なファイルを入れてもログが出ない。
はて、以前調べたところではサービスアーカイブの中にあるファイルを使用するクラスローダが使われてるはずなのだが・・・


サービスのスケルトンの中でブレークポイントを貼ってクラスローダを調べてみると、スケルトン自体はaxis2のサービス用クラスローダでロードされているが、commons-loggingパッケージのクラスはtomcatのwebappクラスローダでロードされている。
ふむ・・・axis2ではクラスローダの優先順位はそのままなのか。
webappクラスローダと同じく自分優先にしてると思ったんだけどな。
ちなみにaxis2のサービス用クラスローダはDeploymentClassLoaderクラス。


クラスローダを置き換えようとしてみたが一筋縄ではいかない。
結局axis2が参照するログ設定にサービス用の設定を追加するしかないのかな。