2011-06-09 17 views
12

Tomcat 6.0.29 sunucusunda ve JDK 1.6'da çalışan bir web uygulamasına sahibim. Ben istemciye yanıt göndermek zaman yanıt boyutu> 8kb olduğundaTomcat 6'da Aktarım Kodlama'yı devre dışı bırakma

, Tomcat başlıklarında

Transfer-Encoding: chunked 

gönderir. tepkiler < 8KB için, ancak bizim istemcileri (tüm sunucular arasında dağıtılır gibi) kodunu değiştirmek istemiyorsanız,

Content-Length : 

Ben Chunked encoding toplu yanıtları işlemek için tercih edilen bir yol olduğunu anlamak gönderir.

nasıl Tomcat Yığın halinde kodlama devre dışı bırakabilir ?

Tomcat HTTP/1.1 devre dışı bırakın ve ben hiçbir başarı ile şu çalıştı

(bunu nasıl emin değilim) HTTP/1.0 sağlayabilir: server.xml yılında Bağlayıcı etiketinde

  1. : Ben şu yapılandırma ile server.xml NIOConnector kullanma bufferSize =" 65536"

    Connector port="8080" protocol="HTTP/1.1" 
         connectionTimeout="20000" 
         bufferSize="65536" socketBuffer="65536" 
         redirectPort="8443" /&gt; 
    
  2. set

    <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" /> 
    

cevap

3

olarak bildiğim kadarıyla, sizin servlet'dir bir içerik uzunluğu başlığı sağlamalısınız Tomcat yığın halinde çıkışını devre dışı bırakmak için. Ben çalışma alabilir

+1

İçerik Uzunluğu üstbilgisini programsal olarak ayarlamak istemiyorum. Büyüyü yapmak için ya "bufferSize" ya da "socketBuffer" bekledim. Hiçbiri işe yaramıyor. – Rajendra

+0

Tomcat ile çalışmanın tek yolu olduğundan eminim. –

8

tek yol tepkisi üzerinde BufferSize ayarlayarak gereğidir.

response.setBufferSize() tepki büyüklüğünün Content-Length başlığını ayarlar. Yanıt boyutu bufferSize'in ötesine geçtiğinde, Transfer-Encoding: Chunked'a geri dönecektir. Tampon boyutu uygun bir değere ayarlanmalıdır. Daha yüksek bir değere ayarlanması, tüm tepkiyi yıkamadan önce bellekte tamponlayacaktır. Dolayısıyla, değer iyimser bir boyuta ayarlanmalıdır. Müşterilerimin

Az Content-Length cevap başlığında esasına dayanmaktadır. Bunu geriye dönük uyumluluk için ayarlamalıyım. Varsayılan olarak Tomcat arabellek boyutu 8K olarak ayarlanmıştır (Weblog/Websphere için bu 32K bayt olduğunu düşünüyorum).

0

bir [Erişimi: yakın] ekleme cevap üstbilgi eklemesini Tomcat'i engeller: başlığını [Transfer-Encoding yığın halinde].

İlgili konular