2010-09-28 5 views
12

Ich habe ein seltsames Problem mit der Federtransaktion festgestellt. Meine Anwendung verwendet Spring mit EJBs. Die EJBs rufen auch Spring-Serviceklassen auf, die mit @Transaction kommentiert sind. Ich habe Spring JtaTransactionManager für das Transaktionsmanagement verwendet. Die Anwendung ist als EAR-Datei gepackt und wird auf jboss5.0 bereitgestellt und es funktioniert gut. Aber wenn ich jboss beauftrage, für jede EAR-Anwendung einen separaten Klassenlader zu verwenden, gibt die Federinitialisierung einen Fehler.Keine JTA UserTransaction verfügbar - geben Sie 'userTransaction' oder 'userTransactionName' an

org.springframework.beans.factory.BeanCreationException: Error creating bean 
    with name 'transactionManager' defined in ServletContext resource 
    [/WEB-INF/applicationContext.xml]: Invocation of init method failed; 
nested exception is java.lang.IllegalStateException: No JTA UserTransaction 
    available - specify either 'userTransaction' or 'userTransactionName' or 
    'transactionManager' or 'transactionManagerName' 

Warum Initialisierung der Feder ist nicht erfolgreich?

Dank

+0

Welche Einstellung haben Sie in JBoss geändert? – skaffman

+0

Ich habe die Datei "ear-deployer-jboss-beans.xml" im Verzeichnis "deplosers" geändert, um die Eigenschaft "isolated" auf "true" zu setzen. – Chir

Antwort

0

try

@EnableTransactionManagement 

auf einer Konfigurationsklasse hinzugefügt, wo Sie Ihre Config-Bean

halten, die für mich gearbeitet, wenn ich das Problem hatte, vielleicht werden Sie andere plattformspezifische brauchen Implementierung des Transaktionsmanagers, aber dies ist ein guter Anfang.

@Bean 
public PlatformTransactionManager transactionManager() { 
    JpaTransactionManager txManager = new JpaTransactionManager(); 
    txManager.setEntityManagerFactory(entityManagerFactory()); 
    return txManager; 
} 
+0

Ich habe ähnliches Problem bei der Bereitstellung von sboot App in IBM WAS, wird prüfen, ob dies funktioniert. – Espresso

Verwandte Themen