2 つの Clojure プロジェクトで構成される Compojure webapp を構築しています。最初のものはいくつかのデータを視覚化するための webapp で、2 つ目は最初のものを使用する必要があるより複雑なアプリケーションです。
2 番目のプロジェクトのrun-jettyを使用して、両方のアプリケーションを同時に実行できるようにしたいと考えています。これにより、2 番目の webapp が最初の webapp から URL を呼び出して視覚化を取得できるようになります。
Compojureのコンテキストマクロを使用しています。2 つ目のアプリのルートは次のとおりです。
(def second-project-main-routes
[
(context "/second" request
(GET "/viewsession" {session :session} (str session))
(GET "/resetsession" [] (reset-session))
... other routes here ...
(route/resources "/"))
])
(def second-all-routes
(concat second-project-main-routes
first-project-routes)
(def second-app
(-> (handler/site (apply routes second-all-routes))
(wrap-base-url)))
;; to comment when building the JAR:
(defonce second-server (run-jetty #'second-app {:join? false :port 8080}))
最初のアプリのルートは次のとおりです。
(def first-project-routes
[(context "/first" request
(GET "/" [] (index-page))
(route/files "/" {:root (str (System/getProperty "user.dir") "/data/public")})
(route/resources "/"))])
2 つの main.js ファイルがあります。firstproject/resources/public/js/app/main.jsに 1 つ 、secondproject /resources/public/js/app/main.js に 1 つ
URL localhost:8080/first/app/js/main.jsを参照すると、 2 番目のプロジェクトの main.js が取得されます。どうして?