このところClojureを使ったウェブアプリケーションを書いていて、
そのアプリケーションを単体で動かそうとしたときのまとめを書いておこうと思います。
ウェブアプリケーションをJarファイルにパッケージしたというそれだけのことですが、ClojureでJarアプリケーションを作って動くことに感動したので。
前提としてLeiningenを使いCompojureでウェブアプリケーションを開発しています。
project.cljに以下の行を追加します。
src/hoge/core.cljには以下のように記述しました。hoge.web/appというのをCompojureのdefroutesで定義しています。
これで、Leiningenを使いJarファイルを作成します。
作成された、hoge-standalone.jarがJettyで起動するかを確認します。
Jettyの起動時のログが出力され、ブラウザでhttp://localhost:8080/を見るとアプリケーションとして動作してるかどうかが分かります。
あとは、このJarファイルをサーバへアップし起動すればOKです。
このやりかただとアプリケーション単体でアプリケーションサーバとして動かしているので、既存のウェブアプリケーションサーバに配置したい場合は、warにしてXMLファイルをゴニョゴニョすればいいんだと思います。
そのアプリケーションを単体で動かそうとしたときのまとめを書いておこうと思います。
ウェブアプリケーションを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ファイルをゴニョゴニョすればいいんだと思います。
コメント