سؤال

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

قدم Googling فقط حلا لاستخدام Oracle.jdbc.driver.oracledriver بدلا من Oracle.jdbc.oracledriver ولكن هذا لا يبدو أنه إصلاح أي شيء. جرة أنا أستخدمها هي OJDBC14.JAR، وبقدر ما أستطيع أن أقول، يتم تضمينها في مسار الفصل لخدمة الويب بشكل صحيح ... نظرا لأنها تعمل عندما أقوم باختبار الخدمة بطريقة رئيسية بسيطة.

تحرير: يتم إنشاؤه لاحظ الحذر الحذركتريتي هي فئة مجمع، ومحاولاتي لمحاولة استخراج الاستثناء باستخدام .getCause () دائما إرجاع NULL.

أنا نشر الخدمة باستخدام JBOSS وكان بما في ذلك ملف جرة السائق في المكتبة للمصدر ولكن ليس للخادم. بما في ذلك برنامج التشغيل في / JBoss / Server / Default / Lib حلها.

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

المحلول

2 حروب؟ أفترض أن OJDBC.JAR يقع داخل Web-Inf / Lib من حرب خدمة الويب.

ربما حربتك داخل الأذن، لذلك يجب أن تشير إلى برنامج التشغيل في manifest.mf.

مزيد من المعلومات: http://java.sun.com/j2ee/ferified/packaging.html.

نصائح أخرى

بدون مزيد من المعلومات، من الصعب تقديم اقتراحات ملموسة؛ ومع ذلك، فقد كان لدي خبرة مع برنامج تشغيل Oracle الذي يحاول الاتصال عبر مكتبات OCI الأصلية، في العثور على تلك المكتبات المثبتة على النظام، وتلقي الاحتياج المحذنا. هذا كل شيء من ذاكرة غامضة للغاية، لذلك سوف تختلف الأميال الخاص بك بالتأكيد تقريبا.

لقد مرت بعض الوقت، ولكن إذا كانت الذاكرة تخدمني، فقد كان لدي حالة حيث تم تكوين عنوان URL للاتصال بشكل غير صحيح، ويتم توجيه Oracledriver (أو أحد مغلفةه) من خلال مجموعة من طرق الاتصال المحتملة، في محاولة للعثور على واحدة عملت. في الحالة أن عنوان URL تم تكوينه بشكل صحيح، لم يصل إلى محاولة OCI (جاءت محاولة طريقة الاتصال الرقيقة أولا)، ولكن إذا كان عنوان URL للاتصال خطأ، فستفشل المحاولة الرفيعة، مما تسبب في محاولة OCI، والتي فشلت بعد ذلك أيضا نظرا لأن عميل OCI لم يكن مثبتا على المضيف (مما أدى إلى تحذير TargetException.)

لذلك، بعض الأشياء للتحقق:

  1. هل عنوان URL هو صالح؟ إذا كنت تستخدم عنوان URL للاتصال نفسه في كلا المكانين، فهل أنت متأكد من أن كلا العمليات ملزمة بنفس NIC؟ إذا كانوا ملزمين لملميات مختلفة، فقد يتسبب في توصيل الرصاص، حتى على نفس المضيف.
  2. هي البيئة نفسها في كلتا الحالتين - إذا كان عميل OCI يستخدم في بيئة التطوير الخاصة بك، فهناك العديد من متغيرات البيئة التي تعتمد عليها. إذا لم يتم تعيين متغيرات البيئة هذه متطابقة في البيئة حيث تعمل حاوية Servlet، فسأتوقع سلوكا مختلفا.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top