CloudFoundryでWARファイルとして実行するClojure Noir Webアプリケーションをビルドします。私project.cljでClojure Noirの初期化フックWAR/Servlet(CloudFoundry)
私が持っている:私はレインリングプラグインを使用してWARファイルをビルド
(def handler (noir.server/gen-handler {:ns 'appname}))
:server.cljで
:ring {:handler appname.server/handler}
私はノワールを使用してハンドラを作成
lein ring uberwar
次に、CloudFoundryを押して、
vmc push appname
リクエストハンドラが正常に動作し、アプリケーションのURLを参照するだけで問題ありません。
問題は次のとおりです。アプリケーションの起動時に初期化を行う正しい方法は何ですか?
私はserver.cljで、次の操作を行うことができます。
(when (System/getenv "VCAP_APPLICATION")
(init-func))
をしかし、それとのカップルの問題があります。まず、間違った時(コードがapp startではなくevalされたとき)に初期化を行っているようです。第二に、プロテクターはCloudFoundryに固有であり、私は確かにこれを行うための適切な一般的なWARの方法があります。
これはServletContextListenerのcontextInitializedメソッドの目的だと思いますが、どうすればNoir/ringでそれをフックできますか?