هل هناك أسباب لوضع التبعية في دليل lib الخاص بخادم الويب بدلاً من تضمينها في ملف الحرب؟

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

سؤال

إذا كان لدي تبعية Jar لتطبيقي، فهل من الأفضل وضعه في دليل lib لملفات الحرب أو وضعه في دليل lib لخادم التطبيقات العالمي (مثل Tomcat)؟ما الذي سأكسبه باستخدام نهج واحد على الآخر؟

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

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

المحلول

بشكل عام، من الأفضل أن يكون WAR مستقلاً بذاته حتى لا تضطر إلى الاعتماد على تكوين الحاوية.فهو يجعل النشر أسهل بكثير أيضًا.لذا حاول وضع المكتبة في الحرب إذا استطعت.

ومع ذلك، واجهت حالات كان فيها تثبيت المكتبات على الحاوية أمرًا منطقيًا.على سبيل المثال،

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

  2. المكتبات المثبتة في WEB-INF/lib غير متاحة للحاوية.إذا كنت بحاجة إلى الرجوع إليها في context.xml (مثل برنامج تشغيل JDBC المحدد في الموارد)، فيجب عليك وضعها في الخادم/lib.

  3. إذا كنت تريد إرسال سجلات log4j من جميع تطبيقات الويب إلى نفس الملف، فيجب عليك وضع log4j jar في الخادم/lib.بخلاف ذلك، يستخدم كل تطبيق ويب المُسجل الخاص به.

نصائح أخرى

إذا كنت تريد استخدام إمكانات إدارة موارد الحاوية - على سبيل المثال.الاتصال بقاعدة بيانات SQL وتوفير مجموعة بحث واتصال JNDI لها - ثم سيحتاج برنامج الحاوية نفسه إلى الوصول إلى المكتبات وبرامج التشغيل لإدارة الموارد.

بخلاف ذلك، ربما لا ترغب في تثبيتها في دليل الخادم /lib وتفترض أنها موجودة وستعمل، حيث قد يكون لتطبيقات الويب المختلفة متطلبات إصدار مختلفة تمامًا.

للحصول على وصف متعمق للتسلسل الهرمي لمحمل الفئة الذي تنفذه Catalina، يجب عليك التحقق من Tomcat طريقة تحميل الفئة.سيساعدك هذا على فهم متى يتم توفير الجرار للحاوية، ولجميع تطبيقات الويب، ولتطبيق ويب واحد فقط...وأين تضعهم.

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