ما الذي يسبب java.lang.IllegalStateException:النشر كبير جدًا في Tomcat / mod_jk

StackOverflow https://stackoverflow.com/questions/123335

  •  02-07-2019
  •  | 
  •  

سؤال

ما هو التكوين الذي يحتاج إلى تعديل، وأين يعيش، من أجل زيادة الحد الأقصى لحجم المنشور المسموح به؟

هل كانت مفيدة؟

المحلول

يقوم Apache Tomcat افتراضيًا بتعيين حد أقصى لحجم طلبات HTTP POST التي يقبلها.في Tomcat 5، تم تعيين هذا الحد على 2 ميجابايت.عند محاولة تحميل ملفات أكبر من 2 ميغابايت، يمكن أن يحدث هذا الخطأ.

الحل هو إعادة تكوين Tomcat لقبول طلبات POST الأكبر، إما عن طريق زيادة الحد أو عن طريق تعطيله.يمكن القيام بذلك عن طريق تحرير [TOMCAT_DIR]/conf/server.xml.قم بتعيين معلمة تكوين Tomcat maxPostSize لـ HTTPConnector إلى قيمة أكبر (بالبايت) لزيادة الحد.سيؤدي ضبطه على 0 إلى تعطيل التحقق من الحجم.انظر مرجع تكوين Tomcat للمزيد من المعلومات.

نصائح أخرى

سيكون الأمر مخصصًا للأشخاص الآخرين، أرى أنك تقوم بربط Apache HTTP وTomcat (tomcat / mod_jk)، في هذه الحالة قم بتحرير موصل Coyote/JK2 AJP 1.3 بنفس الطريقة التي تفعل بها ذلك مع الموصل القياسي (Coyote HTTP/1.1)، لأن موصل AJP1.3 هو المكان الذي يتلقى فيه Tomcat البيانات.

<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector port="8009" 
           enableLookups="false" redirectPort="8443" debug="0"
           protocol="AJP/1.3" maxPostSize="0"/>

السبب الجذري لاستثناء IllegalStateException هو أن Java servlet يحاول الكتابة إلى دفق الإخراج بعد تنفيذ الاستجابة.

احرص على عدم إضافة أي محتوى إلى الاستجابة بعد إعادة التوجيه/إرسال الطلب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top