2012-04-13 4 views
6

私はNoirとclojureを使ってWebアプリケーションを作成しています。これはJettyを使用しています。 Jettyにはgzipを使用する2つの方法があり、1つは静的に、もう1つは動的に使用します。https://stackoverflow.com/a/9113129/104021に記述されています。私は静的と動的の両方のgzipを有効にしたいが、私たちのプロジェクトはweb.xmlファイルを使用せず、開始したくない。Jettyでプログラムでgzipを設定するにはどうすればよいですか?

どうすればプログラムで gzipを使用するようにjettyを設定しますか(つまりweb.xmlを使用せずに)?

答えて

1

ここでStartServerメソッドを参照してください。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipWithPipeliningTest.java

桟橋は、テストのために広範囲の人々はすでにどこかのユニットテストには存在し、それらを見つけるのコースは、問題のビットすることができ必要ので、ほとんどの組み込みのシナリオを自分自身を使用しています:)

4

私が取り組んでいるCompojureアプリケーションでは、GzipHandlerを動的に使用するようにJettyがプログラムで設定する、ring-jetty-adapterに基づいたRing/Jettyアダプタがあります。

(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インスタンスと私のリングハンドラを取り、いくつかのハンドラでそれを設定します。 GzipHandlerHandlerWrapperなので、私の(プロキシされた)リングハンドラとその代理人が必要です。また、(gzip-wrapped)Ringハンドラの後に実行されるロギングハンドラを追加します。

complete working versionをチェックしてください。

関連する問題