2010-09-28 12 views
12

Napotkałem na dziwny problem z transakcją wiosenną. Moja aplikacja używa Spring z EJB. EJB również wywołują klasy usług Spring oznaczone annotacją @Transaction. Użyłem Spring JtaTransactionManager do zarządzania transakcjami. Aplikacja jest spakowana jako plik EAR i jest wdrażana w jboss5.0 i działa dobrze. Ale kiedy instruuję jboss, aby używał oddzielnego programu ładującego klasy dla każdej aplikacji EAR, inicjalizacja wiosny daje błąd.Brak dostępnej transakcji użytkownika JTA - określ "userTransaction" lub "userTransactionName"

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' 

Dlaczego inicjalizacji wiosny nie powiedzie?

Dzięki

+0

Jakie ustawienie zmieniłeś w JBoss? – skaffman

+0

Zmodyfikowałem plik ear-deployer-jboss-beans.xml w katalogu "deployers", aby ustawić właściwość "isolated" na true. – Chir

Odpowiedz

0

spróbuj dodać

@EnableTransactionManagement 

w klasie konfiguracji gdzie trzymasz config fasola

że pracował dla mnie, gdy miałem ten problem, może trzeba będzie inna platforma specyficzny wdrożenie menedżera transakcji, ale jest to dobre miejsce na rozpoczęcie.

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

Mam podobny problem podczas wdrażania aplikacji sboot w IBM WAS, sprawdzi to działa. – Espresso

Powiązane problemy