質問

RingとClojureを使用してWebアプリケーションを作成しています。開発サーバーにJettyアダプターを使用しており、IDEにはEMACS/SLIMEを使用しています。 Lap-Reloadが役立ちますが、Run-Jettyは私のスライムセッションをブロックします。別のターミナルセッションで実行することなく、自由に開始/停止することができます。理想的には、サーバーエージェントを定義し、エージェント内のサーバーを起動/停止するStart-ServerとStop-Serverを機能させたいと思います。これは可能ですか?

役に立ちましたか?

解決

私は通常、私のリングアプリに次のように見える線を持っています:

(defonce server (run-jetty #'my-app {:port 8080 :join? false}))

これにより、REPLのロックアップが防止されます。また、サーバーが再定義されることを心配することなく、このファイルを再コンパイルすることができます。また、そうするように、REPLでやり取りすることができます:

user=> (.stop server)

user=> (.start server)

他のヒント

Jettyドキュメントにはいくつかの情報があります 優雅なシャットダウン 桟橋の。それはおそらく十分な情報ではありませんが、あなたが始めるかもしれません。

私はまだCompojureで遊んでいませんが、全体的にTomcatと仕事をすることを好みます。それはより完全なものです。とりわけ、それを起動してシャットダウンするための十分に文書化されたAPIがあり、専用のポートのシャットダウンコマンドのために耳を傾けます。がある ant これを行うタスクで、もちろんJavaアプリからも呼ばれる可能性があります。 Webコンテナの実行中のインスタンスにREPLを接続することで、Magic Compojureの種類がどのようなものをしているのか、そして自動クラスのリロードが起こるかどうかはわかりません...他の誰かがより多くの情報を提供できることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top