ClojureでJetty Serverを停止するにはどうすればよいですか?
質問
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の種類がどのようなものをしているのか、そして自動クラスのリロードが起こるかどうかはわかりません...他の誰かがより多くの情報を提供できることを願っています。