Všechny jsou REQUIRED
pro upřesnění, konfigurace vypadá takto.
springContext.xml
<bean id="baseSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactor
yBean">
...
</bean>
<bean id="sessionFactory"
class="org.jboss.seam.ioc.spring.SeamManagedSessionFactoryBean">
<property name="sessionName" value="hibernateSession"/>
<property name="baseSessionFactory" ref="baseSessionFactory"/>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
components.xml
<persistence:managed-hibernate-session name="hibernateSession"
auto-create="true" session-factory="#{baseSessionFactory}"/>
<spring:spring-transaction
platform-transaction-manager="#{transactionManager}"/>
Martin
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Roman Pichlik
Sent: Thursday, November 01, 2007 3:54 PM
To: Java
Subject: Re: Chyba při vytváření transakce.
neni nahodou ta transakce nedefinovana s propagaci REQUIRES_NEW? Podle
stack tracu a letmeho nahlednuti do zdrojaku tam dochazi k suspendnuti
puvodni transakce a k otevreni nove, ve ktere selze bindind Hibernati
session, ktera jiz lezi v holderu (threa local promenna).
Martin Chalupa napsal(a):
> Dělá toto. UserBusiness je definován ve springu, připojuje se k databázi
> přes hibernate a je označen @Transactional.
>
> Martin
>
> @Name("authenticator")
> public class Authenticator {
> @In
> Identity identity;
> @In("#{userBusiness}")
> UserBusiness userBusiness;
> @Out(required = false, scope = ScopeType.SESSION)
> User logged;
>
> public boolean authenticate() {
> Long id = userBusiness.checkUsername (identity.getUsername
> (),identity.getPassword ());
> if (id!=null && id>0){
> this.logged = userBusiness.getById (id);
> return true;
> }
> return false;
> }
> }
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
> Behalf Of Roman Pichlik
> Sent: Thursday, November 01, 2007 1:56 PM
> To: Java
> Subject: Re: Chyba při vytváření transakce.
>
> nedela cz.bellman.umm.security.Authenticator neco s Hibernatem?
>
> Martin Chalupa napsal(a):
>> Zdravím,
>>
>>
>>
>> přidal jsem do aplikačního kontextu springu beanu, která implementuje
>> ApplicationListener pro zachytávání událostí v kontextu. A od té doby mi
>> aplikace vyhazuje chybu při pokusu o vytvoření transakce. Pokud beanu
>> odeberu nebo zruším implementaci rozhraní vše funguje.
>>
>>
>>
>> Používám Spring 2.0.6, Seam 2.0 RC3, Hibernate 3.2.4, Session factory je
>> definovaná ve springu a seam managuje session.
>>
>>
>>
>> Nenapadá vás nějaká příčina vzniku chyby?
>>
>>
>>
>> Martin
>>
>>
>>
>> Tady je stack trace:
>>
>>
>>
>> Caused by:
>> org.springframework.transaction.CannotCreateTransactionException: Could
>> not open Hibernate Session for transaction; nested exception is
>> java.lang.IllegalStateException: Already value
>> [EMAIL PROTECTED] for key
>> [EMAIL PROTECTED] bound to thread
>> [http-8080-1]
>>
>> at
>>
>
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(Hiber
> nateTransactionManager.java:541)
>> at
>>
>
org.springframework.transaction.support.AbstractPlatformTransactionManager.g
> etTransaction(AbstractPlatformTransactionManager.java:350)
>> at
>>
>
org.springframework.transaction.interceptor.TransactionAspectSupport.createT
> ransactionIfNecessary(TransactionAspectSupport.java:262)
>> at
>>
>
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tr
> ansactionInterceptor.java:101)
>> at
>>
>
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
> iveMethodInvocation.java:171)
>> at
>>
>
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
> xy.java:204)
>> at $Proxy73.checkUsername(Unknown Source)
>>
>> at
>> cz.bellman.umm.security.Authenticator.authenticate(Authenticator.java:37)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>
>> at
>>
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
> )
>> at
>>
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
> ..java:25
>> at java.lang.reflect.Method.invoke(Method.java:597)
>>
>> at
>> org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
>>
>> at
>>
>
org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext
> ..java:31
>> at
>>
>
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext
> ..java:56
>> at
>>
>
org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackIntercep
> tor.java:31)
>> at
>>
>
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext
> ..java:68
>> at
>>
>
org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.j
> ava:46)
>> at
>>
>
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext
> ..java:68
>> at
>>
>
org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInter
> ceptor.java:42)
>> at
>>
>
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext
> ..java:68
>> at
>> org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:106)
>>
>> at
>>
>
org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInt
> erceptor.java:155)
>> at
>>
>
org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java
> :91)
>> at
>>
>
cz.bellman.umm.security.Authenticator_$$_javassist_1.authenticate(Authentica
> tor_$$_javassist_1.java)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>
>> at
>>
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
> )
>> at
>>
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
> ..java:25
>> at java.lang.reflect.Method.invoke(Method.java:597)
>>
>> at
>> org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:328)
>>
>> ... 95 more
>>
>> Caused by: java.lang.IllegalStateException: Already value
>> [EMAIL PROTECTED] for key
>> [EMAIL PROTECTED] bound to thread
>> [http-8080-1]
>>
>> at
>>
>
org.springframework.transaction.support.TransactionSynchronizationManager...
> indResource(TransactionSynchronizationManager.java:163)
>> at
>>
>
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(Hiber
> nateTransactionManager.java:532)
>> ... 124 more
>>
>>
>>
>> --
>>
>> Martin "chali" Chalupa
>>
>>
>>
>
>
--
S pozdravem Roman "Dagi" Pichlik
/* http://www.sweb.cz/pichlik/ Blog pro kodery */