2012-08-11 11 views
5

मैं जेटटा 7.6 का उपयोग स्केलैट्रा वेब ढांचे के साथ कर रहा हूं। कुछ अनुरोधों में, मुझे क्लाइंट को प्रतिक्रिया निकाय के रूप में एक बड़ा टेक्स्ट भेजने की आवश्यकता है, मैं प्रतिक्रिया लिखने के लिए HttpServletResponse.getWriter() का उपयोग करता हूं।जेटी HTTP 413 शीर्षलेख पूर्ण त्रुटि - जावा/स्कैला

मैंने देखा कि क्लाइंट पक्ष पर मुझे 413 शीर्षलेख पूर्ण त्रुटि प्राप्त होती है। स्पष्ट रूप से जेट्टी में इस समस्या का एक समाधान जेटी के हेडर-बफर-आकार मान को बढ़ाने के लिए है।

मैं जानना चाहता हूं कि HttpServletResponse.getWriter() को अनुरोध के शीर्षलेख के आकार के साथ क्या करना है? जैसा कि मैं समझता हूं HttpServletResponse.getWriter() प्रतिक्रिया शीर्षलेख के बजाय प्रतिक्रिया शरीर में लिखता है।

अगर कोई इस मुद्दे को समझा सकता है तो मैं सराहना करता हूं।

उत्तर

3

HTTP response code 413 एचटीपीस्टैटस है। REQUEST_ENTITY_TOO_LARGE

इसका आपके HttpServletResponse.getWriter() से कोई लेना देना नहीं है।

अनुरोध शीर्षलेखों को कैप्चर और जांचें, आप सर्वर पर एक अनुचित राशि का हेडर भेज रहे हैं।

6

दुर्भाग्य से, यह केवल हेडर नहीं है जो मायने रखता है (जैसे जॉकीम ओगथ)। जेटी के पास हेडर और अनुरोध के लिए एक बफर के लिए एक बफर है।

  • यदि पूरा अनुरोध (http डेटा स्ट्रीम) सुनाई के बफर में कोई समस्या नहीं है।
  • यदि यह हेडर के बफर से अधिक है, तो अनुरोध बफर उपयोगकर्ता होगा।
  • यदि यह तो अनुरोध बफर से अधिक है तो इस स्थिति को 413.

जवाब के लिए एक ही बात (बफर) नहीं है, लेकिन उम्मीद है कि Http भेजने के लिए डिज़ाइन किया गया है के साथ एक मानक HTTP प्रतिसाद मिला है "chunked" प्रतिक्रिया।

मुझे अपलोड के साथ एक ही समस्या का सामना करना पड़ रहा है।

मुझे जो मिला है वह यह है कि आप उन बफर का आकार निर्धारित कर सकते हैं। देखें: http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/server/nio/SelectChannelConnector.html

http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/server/nio/AbstractNIOConnector.html

http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/server/AbstractConnector.html#setRequestHeaderSize(int)

आप jetty.xml फ़ाइल का उपयोग कर सकते हैं यह करने के लिए: यदि आप का उपयोग कर या जेट्टी 9 करने के लिए उन्नत कर रहे हैं

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"  "http://jetty.mortbay.org/configure.dtd"> 
<Configure id="Server" class="org.eclipse.jetty.server.Server"> 
<Call name="addConnector"> 
    <Arg> 
    <New class="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
    <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set> 
    <Set name="requestHeaderSize">8192</Set> 
    </New> 
    </Arg> 
</Call> 
</Configure> 
+1

लिंक देखें अब काम नहीं करेंगे - यहाँ अद्यतन jetty.xml है – morpheus

2

, वे मैंने SelectChannelConnector को हटा दिया है।

<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> 
    <Set name="requestHeaderSize">8192</Set>  
</New> 

<Call name="addConnector"> 
    <Arg> 
    <New class="org.eclipse.jetty.server.ServerConnector"> 
     <Arg name="server"><Ref id="Server" /></Arg> 
     <Arg name="factories"> 
     <Array type="org.eclipse.jetty.server.ConnectionFactory"> 
      <Item> 
      <New class="org.eclipse.jetty.server.HttpConnectionFactory"> 
       <Arg name="config"><Ref id="httpConfig" /></Arg> 
      </New> 
      </Item> 
     </Array> 
     </Arg> 
     <Set name="port">8080</Set> 
    </New> 
    </Arg> 
</Call> 

http://www.eclipse.org/jetty/documentation/current/configuring-connectors.html

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