سؤال

أحاول نشر خدمة ويب Axis2 على خادم تطبيقات OC4J 10.1.3.

كنت أستخدم المحور 1.4 من قبل وقمت للتو بإنشاء مكتبتي المشتركة التي تحتوي على كافة الملفات.كانت هناك مشكلة في الإصدار 1.4 وتم تصحيحها باستخدام الإصدار 1.5، لذا فأنا أستخدمه الآن ولكنه لا يشمل جميع المكتبات.هذه المرة قمت بنشر axis2.war على خادم OC4J وأنا أستخدم صفحة إدارة axis2 لمحاولة نشر خدمة الويب الخاصة بي.

إذا قمت بنشر خدمة ويب من خلال axis2 فسأحصل على java.lang.NoSuchMethodError: javax.jws.WebMethod.exclude()Z لكن لا يمكنني العثور على المكتبة المتعارضة.يحتوي Axis2 على مكتبات jax-ws الجديدة ولكن أعتقد أنها مشكلة في خادم تطبيقات OC4J.لقد استبعدت xml.jar (نظرًا لأنه يحتوي على JAXB 1.0 libs القديمة) وهذا يحل المشكلة على جهازي المحلي ولكن ليس على صندوق Linux.

لقد حاولت تحرير خطة النشر للبحث في المجلدات المحلية أولاً وهذا يسمح لي بنشر الخدمة، ولكن عندما أحاول الوصول إليها أو إلى WSDL، تظهر لي رسالة خطأ بخصوص استثناء فئة Cast وJXDocumentBuilderFactory (ليس لدي الخطأ الدقيق في هذه اللحظة).

لقد قارنت المكتبات المشتركة الموجودة على صندوق Linux مع تلك الموجودة على جهازي المحلي واستخدمت نفس المكتبات في كل منها (على الرغم من ذلك، لم أتحقق من إصدارات كل جرة).إذا تم نشر axis2 إلى OC4J وقمت بنشر خدمتي على axis2، فلن أرث مكتبات axis2 (jax-ws، وما إلى ذلك)؟

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

المحلول

حاول إزالة المكتبة الموروثة المتعارضة عن طريق إضافة هذا إلى ملف orion-application.xml الخاص بك:

<orion-application>
  <imported-shared-libraries>
    <remove-inherited name="PUT_HERE_THE_NAME_OF_THE_LIBRARY"/>
  </imported-shared-libraries>
</orion-application>

المزيد هنا: إزالة و/أو استبدال مكتبة Oracle المشتركة التي تم استيرادها افتراضيًا

يحرر:
لقد بحثت في المكتبات المشتركة ووجدت أنها غير موجودة، حيث يتم تحميل jws-api.jar في وقت التمهيد ولا يمكن إزالته بسهولة:

استبدل مكتبات OC4J JAX-WS
يتمتع OC4J بدعم أولي لـ JAX-WS، وهذا يعني لسوء الحظ أنه أثناء تشغيل OC4J يقوم بتحميل واجهات برمجة تطبيقات JAX-WS القديمة والتنفيذ بواسطة Oracle.يحدث هذا حتى قبل بدء تشغيل المكتبات المشتركة، في مرحلة مبكرة جدًا من تشغيل OC4J.
يتم تكوين مكتبات OC4J وقت التمهيد في ملف boot.xml في $ORACLE_HOME/j2ee/home/oc4j.jar bootstrap jar.للتخلص من هذا:

1-انسخ ملف الجرة إلى ${Oracle.home}/webservices/lib/jaxws
2-قم بفك ضغط الملف OC4J.jar
3-حدد موقع META-INF/boot.xml
4-استبدل المسار في هذا السطر بالجرة الخاصة بك:

<code-source 
   path="${oracle.home}/webservices/lib/jws-api.jar" 
   if="java.specification.version == /1\.[5-6]/"
/>  

5-أعد حزم oc4j.jar (لا تنسى MANIFEST.MF - استخدم jar -m META-INF/MANIFEST.MF)

المقالة الأصلية: تكوين OC4J لخدمات الويب

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