スキップしてメイン コンテンツに移動

投稿

5月, 2010の投稿を表示しています

Clojure + Jettyでウェブアプリケーションを動作させるJarファイル

このところClojureを使ったウェブアプリケーションを書いていて、 そのアプリケーションを単体で動かそうとしたときのまとめを書いておこうと思います。 ウェブアプリケーションをJarファイルにパッケージしたというそれだけのことですが、ClojureでJarアプリケーションを作って動くことに感動したので。 前提としてLeiningenを使いCompojureでウェブアプリケーションを開発しています。 project.cljに以下の行を追加します。 (defproject hoge "1.0.0-SNAPSHOT" :main hoge.core .... src/hoge/core.cljには以下のように記述しました。hoge.web/appというのをCompojureのdefroutesで定義しています。 (ns hoge.core (:use hoge.web compojure) (:gen-class)) (defn -main [& args] (run-server {:port (Integer/parseInt (first args))} "/*" (servlet app))) これで、Leiningenを使いJarファイルを作成します。 lein uberjar 作成された、hoge-standalone.jarがJettyで起動するかを確認します。 java -jar hoge-standalone.jar 8080 Jettyの起動時のログが出力され、ブラウザでhttp://localhost:8080/を見るとアプリケーションとして動作してるかどうかが分かります。 あとは、このJarファイルをサーバへアップし起動すればOKです。 このやりかただとアプリケーション単体でアプリケーションサーバとして動かしているので、既存のウェブアプリケーションサーバに配置したい場合は、warにしてXMLファイルをゴニョゴニョすればいいんだと思います。