تكوين الربيع JTA - كيفية تعيين TransactionManager؟
-
21-09-2019 - |
سؤال
نقوم بتكوين معاملة الربيع الخاصة بنا في تكوين الربيع على النحو التالي:
<tx:jta-transaction-manager/>
جمع هذا يعني أن الربيع سوف يكتشف تلقائيًا تطبيق JTA الأساسي. لذلك عندما نبدأ JBOSS نرى هذه الرسائل أثناء البحث في الربيع:
[JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran
sactionManager]
javax.naming.NameNotFoundException: TransactionManager not bound
<<Big stack trace>>
<<More of the same>>
ثم انظر في النهاية:
[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction
Manager]
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT
ransaction@1f78dde
السؤال هو - كيف يمكننا تحريرنا <tx:jta-transaction-manager/>
علامة لتكوين صراحة java:/Transaction Manager
تنفيذ JTA لذلك نتجنب كل آثار المكدس هذه في السجلات؟ (أفضل عدم تغيير مستويات تسجيل Log4J)
تحديث: أنا محل <tx:jta-transaction-manager/>
مع التكوين أدناه ويبدو أنه يعمل .. أعتقد أن هذا بخير؟
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:/TransactionManager"/>
</bean>
المحلول
نعم ، هذا جيد. كان تتبع المكدس الذي تراه على ما يرام أيضًا: <tx:jta-transaction-manager/>
يحاول الحصول على مدير المعاملات من عدد من المواقع القياسية المختلفة ؛ لكل بحث فاشل JNDI ، سترى javax.naming.NameNotFoundException
.
java:/TransactionManager
هو المكان الذي يرتبط فيه JBoss افتراضيًا ؛ سوف حاويات servlet الأخرى افتراضيا java:/comp/TransactionManager
, ، الذي أعتقد أنه من المفترض أن يكون الموقع "القياسي" لـ TM.
للحصول على السيناريوهات القياسية ، بما في ذلك WebLogic و WebSphere و OC4J ، فكر في استخدام الملاءمة
<tx:jta-transaction-manager/>
عنصر التكوين. سيؤدي ذلك إلى اكتشاف الخادم الأساسي تلقائيًا واختيار أفضل مدير معاملات متاح للمنصة. هذا يعني أنك لن تضطر إلى تكوين فئات المحول الخاصة بالخادم (كما تمت مناقشته في الأقسام التالية) بشكل صريح ؛ سوف يتم اختيارهم تلقائيًا ، مع المعيارJtaTransactionManager
كما الافتراضي.
نصائح أخرى
"خطأ" شائع هو تجميع أشياء مثل jta.jar
و/أو jbossall-client.jar
في مكون J2EE الذي تنشره. تحقق مزدوجًا من فضلك وإزالتها إذا كان هذا هو الحال.