В приложении Compojure, над которым я работаю, у меня есть адаптер Ring/Jetty на основе ring-jetty-adapter, который программным образом настраивает Jetty для использования динамического содержимого gzip для GzipHandler.
(defn- configurator [server ring-handler]
(.setHandler server
(doto (new HandlerCollection)
(.addHandler (doto (new GzipHandler)
(.setHandler (proxy-handler ring-handler))
(.setMimeTypes "text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,text/javascript,image/svg+xml")))
(.addHandler (doto (new RequestLogHandler) (.setRequestLog (NCSARequestLog.)))))))
Эта функция принимает Server экземпляр и мой обработчик кольца и устанавливает его с некоторыми обработчиками. Обратите внимание, что GzipHandler
является HandlerWrapper
, поэтому он принимает мой (проксированный) Ring-обработчик и делегирует его. Я также добавляю обработчик каротажа, который будет выполняться после обработчика Ring (gzip-wrapped).
Проверьте complete working version.