Glassfish - نشر اثنين من JARs مع التبعيات المتبادلة

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

  •  07-09-2020
  •  | 
  •  

سؤال

أنا وافد جديد إلى Java EE، لذا ربما يكون هذا سؤالًا وهميًا.لكنني أقوم بنشر WAR وJAR يحتويان على EJBs على Glassfish 3.1.الخادم.يحتوي WAR على إشارة إلى أحد EJBs في ملف JAR.هل من الضروري تضمين EJB JAR في ملف WAR؟ lib الدليل من أجل جعل هذا العمل؟نظرًا لأن كلاً من WAR وJAR سيتم تشغيلهما على خادم التطبيق نفسه، كنت آمل ألا أحتاج إلى الاهتمام بهذه التبعيات.ومع ذلك، فإنني أحصل على java.lang.NoClassDefFoundError عندما أقوم بنشر WAR إذا لم يتضمن EJB JAR (على الرغم من أن EJB JAR قد تم نشره بالفعل على خادم التطبيق).

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

المحلول

إحدى الركائز الأساسية لـ Java EE هي فكرة إمكانية تشغيل المكونات المختلفة في حاويات لا تشترك في مساحة اسم، على الرغم من أن المكونات قد تعمل في نفس JVM.إذا كانت لديك وحدات تحتاج إلى مشاركة مساحة اسم، فيجب تجميعها في EAR (قبل Java EE 6) أو دمجها في WAR واحد (حالة خاصة أنشأتها Java EE 6 لتطبيقات الويب التي تحتاج إلى الاستفادة من وحدات JBS) .

يعد هذا تغييرًا كبيرًا عما "يعرفه" الأشخاص المطلعون على تطوير Java SE.بالنسبة لمعظم برامج Java SE، تكون الحاوية هي عملية JVM.

لذا الاجابة على سؤالك هي لا.لا تحتاج إلى وضع جرة EJB في دليل lib الخاص بملف WAR.يمكنك إنشاء ملف EAR يحتوي على كلا الأرشيفين."

وهذا قد يوضح لك الوضع..

 myEar.ear
   + myEJBs.jar
   + myWAR.war
   + lib
       + a-jar-that-has-classes-used-in-both-archives-above.jar

نصائح أخرى

هل حاولت تجميع ملفي WAR وJAR معًا في ملف EAR؟يمكن أن يحتوي ملف EAR على دليل lib حيث يمكنك وضع ملفات JAR ليتم تحميلها على مسار الفئة FBO لتطبيق المؤسسة.

هذا يجب أن يحل مشكلة أداة تحميل الفصل لديك.

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