Как получить ServletContext в функции инициализации кольца

Я использую Clojure+Ring для создания веб-приложения, работающего на Glassfish 3. Как я могу получить доступ к ServletContext переменная в кольце init функционировать?

1 ответ

ServletContext, если таковой имеется, доступен в карте запроса. Я нашел полезным взглянуть на значения :context, :servlet-context а также :servlet-context-path, Вот небольшое кольцевое промежуточное ПО, которое я использую для определения пути:

(def ^:dynamic *app-context* nil)

(defn wrap-context [handler]
 (fn [request]
  (when-let [context (:context request)]
    (logging/debug (str "Request with context " context)))
  (when-let [pathdebug (:path-debug request)]
    (logging/debug (str "Request with path-debug " pathdebug)))
  (when-let [servlet-context (:servlet-context request)]
    (logging/debug (str "Request with servlet-context " servlet-context)))
  (when-let [servlet-context-path (:servlet-context-path request)]
    (logging/debug (str "Request with servlet-context-path " servlet-context-path)))
  (binding [*app-context* (str (:context request) "/")]
     (logging/debug (str "Using appcontext " *app-context*))
     (-> request
         handler))))

(defn url-in-context [url]
    (str *app-context* url))
Другие вопросы по тегам