今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Seasar2 を使う−クイックスタート編

まずはクイックスタートのページにあるとおりのコードを書く。Greeting.java と GreetingImpl.java、そして Client のインタフェースと実装と S2Container を使ってるメインを書いてコンパイル!通った。完全かどうかは分からんけど、セットアップはうまくいってそうな雰囲気。実行したら期待通りに動作。よしよし。
次に aop.dicon を使っている次のサンプルを試す。コンパイルは不要なので、dicon ファイルだけ書き換えて実行。

Exception occured at /components[1]/include[1]
org.seasar.framework.util.ResourceNotFoundRuntimeException: [ESSR0055]リソース(a
op.dicon)が見つかりません

ドキュメントのセットアップのところを読み返してみる。

Seasar2拡張機能(S2JTA, S2DBCP, S2JDBC, S2Unit, S2Tx, S2DataSet)を利用する場合には以下のファイルを追加でCLASSPATHに含める必要があります。

  • lib/junit-3.8.1.jar
  • lib/poi-2.5-final-20040804.jar
  • lib/s2-extension-2.x.x.jar
  • lib/geronimo-jta_1.0.1B_spec-1.0.jar (下記参照)
  • resources/aop.dicon
  • resources/j2ee.dicon

resources/aop.dicon は拡張機能の方にあるけど、基本機能でいるんじゃないの?これってもしかするとドキュメントの間違い?
CLASSPATH に、拡張機能を利用する場合に必要と書かれている全部を追加して実行。これなら文句ねいだろ。

Exception occured at /components[1]/aspect[1]
java.lang.ClassCastException: org.seasar.framework.container.impl.S2ContainerImpl
        at org.seasar.framework.container.factory.AspectTagHandler.end(AspectTag
Handler.java:59)

例外。orz
今度は何が悪いんだ?
id:higayasuo さんの指摘を見て、GreeetingMain3.dicon を見直したところ、components 直下に aspect を書いているのに気付いた。そこを修正したら動作した。動作したけど問題あり。

log4j:WARN No appenders could be found for logger (org.seasar.framework.aop.inte
rceptors.TraceInterceptor).
log4j:WARN Please initialize the log4j system properly.
Hello World!

ログが出力されるはずが、log4j の警告が出力されている。むむむ。。。