ARJUNA-12140 Adding multiple last resources is disallowed.
...
Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 0:ffff0acc0a36:12ce:4e6754eb:142 status: ActionStatus.ABORT_ONLY >); - nested throwable: (org.jboss.resource.JBossResourceException: Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 0:ffff0acc0a36:12ce:4e6754eb:142 status: ActionStatus.ABORT_ONLY >))JBOSS 6'da varsayılan ayarlar olarak bir transaction'da tek datasource kullanabiliyorsunuz. Bu nedenle two phase commit gereken işlemleri yapamıyorsunuz. Bunu yapabilmek için deploy dizini altındaki transaction-jboss-beans.xml dosyasını açınız ve aşağıdaki değişikliği yapınız.
<bean name="CoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoreEnvironmentBean">
...
<property name="allowMultipleLastResources">true</property>
<property name="allowMultipleLastResources">true</property>
...
</bean>
Bunu yapınca uygulamanızı çalıştırdığınızda konsolde aşağıdaki bir warning alabilirsiniz:
WARN [com.arjuna.ats.arjuna] ARJUNA-12141 Multiple last resources have been added to the current transaction. This is transactionally unsafe and should not be relied upon. Current resource is com.arjuna.ats.internal.arjuna.abstractrecords.LastResourceRecord@63a188
Bunun nedeni jboss datasource xml'inizde kullandığınız datasource tipi local datasource olmasıdır. Bunun yerine two phase commit imkanı sağlayan xa datasource kullanınız.
1 yorum:
Hi Serkan,
thanks for your article,
if I were you I wrote this article in English, so more people can read and use.
Best Regards
Yorum Gönder