سؤال

وأنا أتساءل كيف هي قادرة على التحقق من وجود أخطاء قاعدة البيانات الطبقات جبوس ExceptionSorter.

وتطبيق (إطار EJB أو استمرار) تحتجز الإشارة إلى اتصال قاعدة البيانات، حتى يتم القبض SQLExceptions من قبل التطبيق. كيف جبوس قادرة على رؤية محتويات استثناء؟

هل جبوس التفاف اتصال واعتراض هذه الرسائل أو شيء من هذا القبيل؟

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

المحلول

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

في بعض الحالات، يمكنك ان ترى هذا المجمع كخط في تتبع المكدس عندما يتم طرح استثناء بواسطة قاعدة البيانات، مثل استثناء جملة SQL. انظر السطر الأخير في المثال التالي:

java.sql.SQLException: ORA-00942: table or view does not exist
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:810)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:850)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1134)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3384)
    at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:342)

وأتصور هذا المجمع قد توفر استثناء للتفتيش اقترحتم.

نصائح أخرى

وجبوس يستخدم تجمع الاتصال لdatasources لها (org.jboss.resource.adapter.jdbc.local.LocalTxDataSource). وExceptionSorter يأخذ SQLException كمعلمة التي بعد ذلك فقط يتحقق لبعض السلاسل التي تعين بعض الأخطاء. إذا تمثل أخطاء مشكلة اتصال فعلي بعد ذلك سوف تبدو الى حد ما مثل "خطأ مأخذ توصيل" أو "ماسورة مكسورة".

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

لقاعدة بيانات Oracle:

<property name="exceptionSorterClassName"><value>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</value></property>

وهذا سيعمل على قاعدة بيانات Oracle. هنا هو رمز لذلك التنفيذ ExceptionSorter:

http://kickjava.com /src/org/jboss/resource/adapter/jdbc/vendor/OracleExceptionSorter.java.htm

وكيف البرمجة الداخلية من أين أو كيف يتحقق تجمع الاتصال اتصال غير معروفة بالنسبة لي. التحقق من رمز مصدر جبوس.

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