2011-06-09 17 views
12

में ट्रांसफर-एन्कोडिंग को अक्षम कैसे करें मेरे पास एक वेब एप्लिकेशन टॉमकैट 6.0.2 9 सर्वर और जेडीके 1.6 पर चल रहा है।टॉमकैट 6

जब मैं ग्राहक को जवाब भेजें, बिलाव भेजता

Transfer-Encoding: chunked 
हेडर में

जब प्रतिक्रिया आकार> 8KB है। प्रतिक्रियाओं < 8KB के लिए, यह भेजता

Content-Length : 

मैं समझता हूँ कि Chunked encoding थोक प्रतिक्रियाओं को संभालने के लिए पसंदीदा तरीका है, फिर भी हमारे ग्राहकों (चूंकि वह सभी सर्वर पर वितरित किया जाता है) उनके कोड बदलने के लिए नहीं करना चाहती।

मैं टॉमकैट में चंक किए गए एन्कोडिंग को कैसे अक्षम कर सकता हूं?

मैं बिलाव में HTTP/1.1 अक्षम करें और (यकीन नहीं मैं यह कैसे कर सकते हैं)

मुझे कोई सफलता के साथ पालन करने का प्रयास HTTP/1.0 सक्षम हो सकते हैं:

  1. server.xml में

    कनेक्टर टैग में , मैं सेट bufferSize =" 65536"

    Connector port="8080" protocol="HTTP/1.1" 
         connectionTimeout="20000" 
         bufferSize="65536" socketBuffer="65536" 
         redirectPort="8443" /&gt; 
    
  2. निम्न कॉन्फ़िगरेशन के साथ server.xml में NIOConnector का उपयोग करना:

    +०१२३५१६४१०
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
         connectionTimeout="20000" 
         socket.directBuffer="false" 
         socket.rxBufSize="25188" 
         socket.txBufSize="43800" 
         socket.appReadBufSize="32768" 
         socket.appWriteBufSize="32768" 
         socket.bufferPool="500" 
         socket.bufferPoolSize="100000000" 
         socket.processorCache="500" 
         socket.keyCache="500" 
         socket.eventCache="500" 
         socket.tcpNoDelay="false" 
         socket.soKeepAlive="true" 
         socket.soTimeout="5000" 
         redirectPort="8443" /> 
    

उत्तर

3

जहाँ तक मुझे पता है, chunked उत्पादन बिलाव में आप अपने सर्वलेट में एक सामग्री की लंबाई शीर्ष लेख की आपूर्ति करनी होगी निष्क्रिय करने के लिए।

+1

मैं सामग्री-लंबाई शीर्षलेख प्रोग्रामेटिक रूप से सेट नहीं करना चाहता हूं। मुझे जादू करने के लिए या तो "बफर आकार" या "सॉकेटबफर" की उम्मीद थी। उनमें से कोई भी काम नहीं करता है। – Rajendra

+0

मुझे यकीन है कि यह टॉमकैट के साथ काम करने का एकमात्र तरीका है। –

8

प्रतिक्रिया पर बफर आकार को सेट करके मैं इसे काम कर सकता हूं।

response.setBufferSize()Content-Length प्रतिक्रिया आकार के शीर्षलेख सेट करता है। एक बार प्रतिक्रिया आकार बफर से परे हो जाता है आकार यह Transfer-Encoding: Chunked पर गिर जाएगी। बफर आकार उचित मान पर सेट किया जाना चाहिए। इसे उच्च मान पर सेट करने से पहले फ्लैश करने से पहले स्मृति में सभी प्रतिक्रियाएं बफर हो जाएंगी। तो मूल्य एक आशावादी आकार पर सेट किया जाना चाहिए।

मेरे कुछ ग्राहक Content-Length प्रतिक्रिया शीर्षलेख के आधार पर हैं। मुझे पिछड़े संगतता के लिए इसे सेट करना होगा। डिफ़ॉल्ट रूप से टॉमकैट बफर आकार 8K पर सेट होता है (मुझे लगता है कि वेबलॉगिक/वेबस्पेयर के लिए यह 32 के बाइट्स है)।

0

प्रतिक्रिया में [कनेक्शन: क्लोज़] हेडर जोड़ना टोमकैट को [ट्रांसफर-एन्कोडिंग: चंकेड] हेडर जोड़ने से रोकता है।

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