سؤال

أواجه مشاكل في الترحيل من OC4J 10.1.2.3 إلى 10.1.3.1.4.تكمن المشكلة في التطبيقات التي تحتوي على وحدات EJB متعددة (جميعها 2.1، ولا يوجد بها EJB 3.0).سيأخذ Jdeveloper ملف ejb-jar.xml الافتراضي (الملف المطلوب لـ Jdeveloper لتشغيله على مثيل OC4J المستقل الخاص به) ويجمعه في كل وحدة EJB JAR مهما كان الأمر.يؤدي هذا إلى قيام خادم التطبيق بالتنقيب في كل وحدة نمطية من وحدات EJB JAR عند النشر، والعثور على نفس ملف ejb-jar.xml N مرات (حيث N = عدد وحدات EJB).يؤدي هذا إلى تكرار مراجع EJB وسيؤدي إلى تعطيل أي عمليات بحث لـ JNDI مثل:"java:comp/env/ejb/EJBName".ومن ثم، يؤدي نشر تطبيق يحتوي على 3 وحدات EJB، وEJB1، وEJB2، وEJB3 إلى قيام خادم التطبيق بتسجيل 9 وحدات EJB بدلاً من 3. أحتاج إلى طريقة أفضل الممارسات، ولكن بين الطريقة التي يتصرف بها 10.1.3.4 وJDeveloper، يكون الوضع خطيرًا إلى حد ما...

ملاحظة جانبية:ستعمل إذا تم تحويل رمز بحث JNDI الخاص بتطبيق الويب إلى "ejb/EJBName" فقط.هذا غير مرغوب فيه بالرغم من ذلك.

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

المحلول 2

كانت المشكلة مرجعًا متعددًا في ملفات تعريف النشر الخاصة بنا.لقد قمنا بإنشاء ملف تعريف نشر لكل EJB.هذا يعني أن كل EJB لديه ملف ejb-jar.xml الخاص به (يحتوي هذا الملف على وصف لجميع EJBS في المشروع).لذلك، في كل مرة يقوم فيها JDeveloper بإنشاء EJB، فإنه يضع واصفًا لجميع EJBS في كل EJB يقوم بإنشائه، مما يتسبب في عدد NxN من المراجع.لذلك Nx(N-1) مراجع إضافية.

الآن، النقطة الأساسية هي أن Oracle Application Server 10.1.2.3.0 وما يليه لم يهتموا بهذه المراجع المكررة.ومع ذلك، وكما نرى، فإن الإصدار 10.1.3.1.4 هو إصدار مختلف تمامًا وقد تم كسره.

الإصلاح لدينا:أن يكون لديك ملف تعريف واحد فقط لنشر EJB يحتوي على كافة فئات EJB وPOJO التي يستخدمونها.تذكر، قبل أن يكون هناك ملف تعريف EJB واحد لكل EJB...كل ما فعله هو السماح لـ Jdeveloper (وهو هراء IMHO) بذلك بشكل صحيح إنشاء EAR صالح.مزيج من حماقة Jdeveloper وOracle's Application Server هو ما تسبب في ذلك.

نصائح أخرى

يجب عليك التحقق من وثائق أوراكل لمعرفة ما هي حالتك.تعد حاويات Oracle® لـ J2EE Enterprise Javabeans Developer بداية جيدة وفقًا لـ Oracle® Containers for J2EE Services Guide ، الفصل 2:باستخدام JNDI عند استخدام نموذج "EJB/EJBNAME" الذي تقوم به "البحث" المحلي.إذا كنت تريد استخدام النموذج الكامل، فيجب عليك التحقق من قسم "تمكين عمليات البحث العالمية عن JNDI" في فصل "استخدام JNDI".

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