2009-11-23 14 views
13

Spring işlemimizi Spring yapılandırmasında şöyle yapılandırırız:Bahar JTA yapılandırması - TransactionManager nasıl ayarlanır?

<tx:jta-transaction-manager/> 

Bunu derlediğimde Spring otomatik olarak JTA uygulamasının temelini keşfedecektir. Yani JBoss'u başlattığımızda, Spring aramaları sırasında şu mesajları görüyoruz:

[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>> 

Ve sonra en sonunda:

[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction 
Manager] 
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT 
[email protected] 

Soru: java:/Transaction Manager JTA uygulamasını açık bir şekilde yapılandırmak için <tx:jta-transaction-manager/> etiketimizi nasıl düzenleyebiliriz? Bu yüzden tüm bu yığın izlerini günlüklerde saklarız? (Sadece Log4J kayıt seviyelerini değiştirmemeyi tercih ederim)


Güncelleme: Ben <tx:jta-transaction-manager/> yerine aşağıdaki config ile çalıştım ve işe yaramış gibi görünüyor .. sanırım bu tamam mı?

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManagerName" value="java:/TransactionManager"/> 
</bean> 
+1

Genel olarak konuşursak, ben bu soru burada çözeceğini demiyorum vb JBoss sürümü, sen deplpoying olan uygulamanın tür gibi bağlamına mümkün olduğunca fazla bilgi sunmak için her zaman iyidir, ama yardımcı olabilir. –

cevap

13

Evet, sorun değil. Gördüğünüz yığın izi de tam olarak doğruydu: <tx:jta-transaction-manager/>, işlem yöneticisini bir dizi farklı standart konumdan almaya çalışır; Her başarısız JNDI araması için javax.naming.NameNotFoundException'u göreceksiniz. JB2'nin varsayılan olarak bağlandığı yerdir; diğer sunucu kapsayıcıları varsayılan olarak TM için "standart" konum olarak düşünülecek olan java:/comp/TransactionManager için varsayılan olacaktır. Spring reference documentation itibaren

: WebLogic, WebSphere ve OC4J dahil standart senaryolar için

, rahat <tx:jta-transaction-manager/> yapılandırma öğesi kullanılarak düşünün. Bu otomatik olarak altta yatan sunucuyu algılar ve platform için kullanılabilir en iyi işlem yöneticisi seçin. Bu, sunucusuna özgü bağdaştırıcıya sınıflarını (aşağıdaki bölümlerinde açıklandığı gibi) açıkça yapılandırmanız gerekmeyeceği anlamına gelir; 'un standart JtaTransactionManager standart olarak standart geri dönüşü olarak otomatik olarak seçilmesini tercih ederler.

4

Yaygın bir "hata" sen dağıtmak J2EE bileşeninde jta.jar ve/veya jbossall-client.jar gibi şeyler paket etmektir. İki kez kontrol edin ve eğer durum buysa bunları kaldırın.

İlgili konular