2012-04-13 14 views
6

मैं नोएर और क्लोजर का उपयोग करके एक वेब ऐप लिख रहा हूं, जो जेटी का उपयोग करता है। जेटी के पास gzip का उपयोग करने के दो तरीके हैं, एक स्थिर के लिए, और गतिशील के लिए, उन्हें https://stackoverflow.com/a/9113129/104021 में वर्णित किया गया है। मैं स्थिर और गतिशील gzipping दोनों चालू करना चाहता हूं, लेकिन हमारी परियोजना web.xml फ़ाइलों का उपयोग नहीं करती है, और शुरू नहीं करना चाहती है।मैं जेटी में प्रोग्रामेटिक रूप से gzip कैसे सेट करूं?

मैं प्रोग्रामेटिक रूप से जेटी को gzip (यानी 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 ऐप्लिकेशन में, मैं एक अंगूठी/जेट्टी एडाप्टर ring-jetty-adapter के आधार पर जो प्रोग्राम के रूप में कॉन्फ़िगर करता जेट्टी एक GzipHandler उपयोग करने के लिए गतिशील रूप से सामग्री gzip किया है।

(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 है, इसलिए यह मेरे (प्रॉक्सी) रिंग हैंडलर और प्रतिनिधियों को ले जाता है। मैं एक लॉगिंग हैंडलर भी जोड़ता हूं जिसे रिंग हैंडलर (gzip-wrapped) के बाद निष्पादित किया जाएगा।

complete working version देखें।

संबंधित मुद्दे