Tomcat で実行されている既存の Java Web アプリケーションに、いくつかの基本的な Clojure サポートを追加しています。とりあえず、Clojure のソース ファイルをリソースとしてクラスパスに含めて、clojure.lang.RT
. 原始的ですが、うまく機能します。
ただし、 Clojure がソース コードの取得とコンパイルに使用する、取得したWebappClassLoader
リソースを Tomcat がキャッシュしていることに気付きました。getResourceAsInputStream()
つまり(require 'my-ns :reload)
、更新されたファイルがディスク上にある場合でも、キャッシュされたバージョンのファイルを再ロードするだけです。Clojure ファイルのこのキャッシュを回避または回避する方法はありますか?
実りのないグーグル検索の後に思いついた最善の方法は、リフレクションを使用して、ひどいWebappClassLoader.resourceEntries
エントリを手動で削除することです。
私は何かが欠けているに違いない。
「Jetty/Glassfish/JBoss を使用する」、「Tomcat を再起動する」などの回答は、私が探しているものではありません。