更新されたので beta1 から pom.xml のバージョンを書き換えてインストールしてみました。
ビルドしてみると app-cubby.dicon で cubby-handlers.dicon が存在しないと言われエラーに。どうやら cubby-s2-2.0.0-beta1.jar から取り除かれたようです。 app-cubby.dicon の以下の記述を削除。
<include path="cubby-handlers.dicon"/>
エラーを取り除いて実行。
[ESSR0046]コンポーネント(requestParsers)が見つかりません
サンプルを見てみると app-cubby.dicon が修正されていました。
<component name="multipartRequestParser" class="org.seasar.cubby.controller.impl.MultipartRequestParser" />
<component name="defaultRequestParser" class="org.seasar.cubby.controller.impl.DefaultRequestParser" />
<component name="requestParsers">
{ multipartRequestParser, defaultRequestParser }
</component>
修正して実行。アクセスしてみると別のエラーに変わりました。
java.lang.IllegalArgumentException: サービス interface org.seasar.cubby.spi.PathResolverProvider を提供するプラグインがありません
ここでようやく修正内容を確認すると(遅い!)、プラグイン機構が見直されたようです。
CubbyServlet からプラグインを初期化する仕組みになったので、 web.xml に CubbyServlet をロードしてあげるようにすることで動作するようになりました。
<servlet> <servlet-name>cubby</servlet-name> <servlet-class>org.seasar.cubby.servlet.CubbyServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet>
少しコードを追っかけてみると Cubby 内の ServiceLoader クラスが META-INF/services/org.seasar.cubby.Plugin を読みに行ってプラグインをロードする仕組みになっていました。 JDK 1.6 から搭載された ServiceLoader をエミュレートした形になっているといえます。