سؤال

لقد وصلت إلى هذا السلوك السيء على JBOSS 4.2 في ضمان الجودة، وأريد أن يرفعه في برعم قبل أن نذهب إلى الإنتاج وإيجاد بعض الزاوية الأخرى.

يدعو JSP طريقة تحتوي على التوقيع التالي:

 public void methodName(String arg)

تم تغيير هذا إلى:

 public void methodName(String arg, Object... args)

تسمى JSP الموجودة مسبقا هذه الطريقة عن طريق:

 methodName("param");

عند نشر التعليمات البرمجية المعدلة، لم يعد JBoss إعادة ترجمة JSP وتسبب هذا في تعطل في ضمان الجودة. إضافة تعليق سخيف إلى JSP ثابت المشكلة (المعترف به JBOSS أن JSP تغيرت وأرسلتها).

هل هناك إعداد على JBOSS لإجبار إعادة كتابة jsps على إعادة التشغيل؟

تحرير: لتوضيح بعض النقاط في الإجابة، فإن الإعداد هو أن JSPs جزء من الحرب التي تعد جزءا من الأذن. الأذن لديها جميع الفصول في ذلك، في جرة.

فيما يتعلق بالرغبة في الترجمة مسبقا، إذا كان النظام لا يعتقد أن JSP يحتاج إلى تجميع، فسوف يترجم إعادة ترجمة قوة مسبقة؟ لا يبدو ذلك. الخطأ هنا ليس خطأ في الامتثال، فهو خطأ لاستدعاء الأسلوب بسبب "تغيير" (في مستوى رمز البايت، وليس حقا في مستوى مستوى التعليمات البرمجية) توقيع طريقة.

Addendentum: لاحظ أننا مررنا في الإنتاج مؤخرا أنه حتى مع إشارة الإجابة المقبولة، لم يتم إعادة ترجمة JSPS، على الرغم من أن JSP قد تغيرت في الواقع. علة كبيرة هناك، ولكن بغض النظر، كان JBoss إغلاق بشكل طبيعي. في هذه المرحلة، يكون هناك إصدار قديم من JBoss، ولكن إذا كنت لا تزال تستخدمه، فهو حذف محتوى الأدلة للعمل و TMP هو الطريقة الوحيدة للتأكد.

أنا لا أغير الإجابة المقبولة ببساطة لأنها تصل حقا إلى حد ما كان السؤال الذي كان يبحث عنه. الأخطاء JBOSS هي نوع من قضية منفصلة.

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

المحلول

إذا كانت JSPs جزءا من الحرب جزء من الأذن التي يتم نشرها كجار، فأنا لست من الواضح لماذا لا يتم إعادة ترجمة JSPS الخاصة بك. لا تحتوي jsps في ملف الحرب على طابع زمني أحدث من ملفات الفئة المترجمة من JBOSS من آخر نشر؟ إذا لم يكن الأمر كذلك، فلن تلمس JSPs كجزء من بناء الحرب / الأذن قبل النشر. [أشير إلى استخدام أمر UNIX "المس"، وليس لمس يدويا كل ملف JSP يدويا.

بدلا من ذلك، فإن إعداد deleteworkdironcontextdestroyy في $ JBoss / Server / default / deverse / jboss-web.deployer / meta-inf / jbose-service.xml قد يكون ما تبحث عنه. إنه خاطئ بشكل افتراضي، ولكن بإعداده إلى True قد يكون ما تحتاجه. أعتقد أن هذا يجب أن يحذف ملفات فئة JSPS على إعادة النشر بحيث يتم إنشاؤها عند الوصول أولا إلى كل JSP.

يرى https://jira.jboss.org/jira/browse/jbas-3358. لمزيد من المعلومات.

نصائح أخرى

لا أعرف من الإعداد، ولكن حذف ملف Java Class الذي تم إنشاؤه في دليل عمل مثيل JBOSS الخاص بك سيؤدي إلى إعادة ترجمة JSP في المرة التالية التي يطلق عليها.

كنت تقوم Coudl بتغيير البرامج النصية لبدء بدء تشغيل JBOSS إلى أدلة "TMP" و / أو "العمل" بشكل صريح، حيث يتم تخزين JSPS مترجمة. لن يكون لدى JBoss أي خيار سوى إعادة ترجمةهم جميعا.

لا خفية، لكنه سيفعل الوظيفة.

سيكون هناك خيار واحد لكي يعمل على عرض كل JSP الخاص بك في وقت البناء. هذا من شأنه أن يذكر بسرعة أي أخطاء تجميع.

يمكنك أيضا القيام بذلك في الإنتاج - تسريع الوصول أولا، لكنني أحصل على الشعور الذي تريده هذا أكثر مقابل خطوة ضمان الجودة من أي شيء آخر. إذا كان الأمر كذلك، فيمكنك إضافة خطوة Precompile إلى مرحلة الاختبار الخاصة بك في أداة البناء الخاصة بك في الاختيار - وهكذا لبيئة CI الخاصة بك. هذا من شأنه أن يوفر التأكيد على أن JSP التي لا تجميعها لن تصنعها من الاختبار.

انظر هذا للحصول على تفاصيل حول تشغيل مهمة precompile:

JBoss Jasper التكوين

أتمنى أن يساعدك هذا.

تدعم بعض حاويات JSP (حسب القسم 8.4.2 من مواصفات JSP 1.2) إمكانية Precompiling صفحة JSP.

إلى Precompile صفحة JSP، قم بالوصول إلى الصفحة باستخدام سلسلة الاستعلام من؟ JSP_PRECOMPILE

http://hostname.com/mywebapp/mypage.jsp?jsp_precompile

لن يتم تنفيذ صفحة JSP. إذا كانت الحاوية تدعم الدعم، فسيتم تجميع صفحة JSP إذا لزم الأمر.

أنظر أيضا http://www.rgagnon.com/javadetails/java-0414.html.

Pablojim على المسار الصحيح. تحتاج فقط إلى مزيد من المعلومات للحصول على عرض كامل لما يحدث. إليك كيف أفهمها.

في Prod، قمت بتغيير JSP يتطلب إعادة ترجمة JSPs أخرى. من أجل الحصول على إعادة ترجمة واحدة من 2 الأشياء يجب أن يحدث

  1. يجب حذف النسخة المترجمة من JSP.
  2. يحتاج JSP نفسه إلى تعديل (أو حتى لو تم تحديث التاريخ "الذي تم لمسه")

إذا كنت لا تزال بحاجة إلى التحقق من أن جميع عمل JSPs الخاص بك، فسيحتاج جميعا precompivile باستخدام مهمة النمل. وبعد يتيح لك هذا أيضا نشر ملف الحرب باستخدام JSPs Precompiled JSPS في ملف الحرب. هذا يجب ان يحل مشكلتك.

إذا لم يتم نشر ملفاتك في ملف حرب، ولكن في شكل انفجار، يجب عليك تنظر بجدية في التعبئة والتغليف تطبيق الويب الخاص بك في ملف حرب للنشر. هذا يجعلها حزمة لطيفة للنشر بين البيئات.

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