Cubby on Jetty
今回の脱線: jettyのmaven2リポジトリは構成がバージョンによってむちゃくちゃなのでdependencyの指定に注意
夜中のCubbyの続きです。無事、スケルトンはできあがったのですが、なぜかJettyで動かしたいという脱線欲が出てきてしまいました。
僕はEclipseのTomcatプラグインがなぜかあまり好きではないのです。理由は分からないですが、Tomcatにしか対応していないとか、勝手にアプリケーションサーバをダウンロードしてくれないとか、そういう所のような気がします。
そこでJettyのランチャを書いて、そいつをEclipse上で[Run as...]とか[Debug as...]するようにしようと思います。
まずは、作成したCubbyのスケルトンプロジェクトのpom.xmlに以下のdependencyを追加します(ちなみに僕は、maven2-eclipse-pluginを使ってますので、とりあえずtestスコープにしました)。
.... <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>6.1.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-api</artifactId> <version>2.1-6.0.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp</artifactId> <version>2.1-6.0.1</version> <scope>test</scope> </dependency> ...
と、さらっと書きましたが、この構成を探し当てるまでが一苦労なのでした。まず、jettyのmaven2リポジトリには、jsp関連だけで以下のようなartifactIdがあります。その中にjettyのリリースに応じていくつものバージョンがある訳ですがですが、これがあったりなかったり、はたまたあったかと思ったらpom.xmlだけだったり…。リリースの度にリポジトリの構成をたびたび見直したような感じ。
[DIR] jsp-2.0/ 12-Sep-2008 08:58 -
http://repo1.maven.org/maven2/org/mortbay/jetty/
[DIR] jsp-2.1-glassfish/ 16-Jul-2008 02:19 -
[DIR] jsp-2.1-jetty/ 05-Aug-2008 16:22 -
[DIR] jsp-2.1/ 12-Sep-2008 08:57 -
[DIR] jsp-api-2.0/ 12-Sep-2008 08:58 -
[DIR] jsp-api-2.1-glassfish/ 16-Jul-2008 02:15 -
[DIR] jsp-api-2.1/ 12-Sep-2008 08:56 -
[DIR] jsp-api/ 04-Jan-2007 13:23 -
[DIR] jsp/
試行錯誤の結果、バージョン違いでも動くことが分かりましたので、とりあえず上記の構成に落ち着きました。
さてさて、ランチャーの方は次のように /src/main/test 以下に記述しました。
package goking.cubby_report.jetty; import org.mortbay.jetty.Connector; import org.mortbay.jetty.Handler; import org.mortbay.jetty.Server; import org.mortbay.jetty.handler.DefaultHandler; import org.mortbay.jetty.handler.HandlerCollection; import org.mortbay.jetty.nio.SelectChannelConnector; import org.mortbay.jetty.webapp.WebAppContext; import org.mortbay.jetty.webapp.WebXmlConfiguration; public class JettyRunner { public static void main(String args[]) throws Exception { Server server = new Server(); Connector connector = new SelectChannelConnector(); connector.setPort(8080); server.setConnectors(new Connector[]{connector}); WebAppContext context = new WebAppContext(); context.setContextPath("/cubby-report"); context.setWar("src\\main\\webapp"); WebXmlConfiguration conf = new WebXmlConfiguration(); conf.setWebAppContext(context); HandlerCollection handlers= new HandlerCollection(); handlers.setHandlers(new Handler[]{context, new DefaultHandler()}); server.setHandler(handlers); server.start(); server.join(); } }
これを、[Run as...]で起動して、今のところ問題なく動いてます。もちろん、[Debug as...]で起動すれば、ブレークポイントもはれますよ。
なお、ランチャの作成の際には以下のサイトをチラ見しました。
Jettyサーバを使ってみる
http://civic.xrea.jp/dev/jetty/
2006/02/27 by civic
一応、スナップショットもつけとこ。
というわけで、肝心のCubbyでのサンプルアプリの作成は…明日の朝だな…。
それにしても "Cubby on Jetty" って韻を踏んでていい感じ。