title: Spring Transaction failed to open on service
body: <p>I wanted to set <code>@Transactional</code> on my services instead of my DAOs... in order to open transaction and be able to use some lazy collections within my services without getting some "LazyInitializationException".</p>
  
  <p>Untill now the <code>@Transactional</code> were on the DAOs, and transactions were opened and closed when entering in the DAOs and exiting from them.</p>
  
  <p>Now, with <code>@Transactional</code> on my services, transactions are not even opened. So the service call the DAO with no transaction opened and we got the folowing exception: org.hibernate.SessionException: Session is closed!</p>
  
  <p>We're using JPA over Hibernate, here is an extract from our configuration:</p>
  
  <pre><code>&lt;bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /&gt;
  
  &lt;bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/&gt;
  
  &lt;bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"/&gt;  
  
  &lt;bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"&gt;
      &lt;property name="entityManagerFactory" ref="entityManagerFactory" /&gt;
  &lt;/bean&gt;
  
  &lt;tx:annotation-driven /&gt;
  </code></pre>
  
  <p>EDIT, thanks for your replys/comments:
  So, i'm declaring the @Transactional on the whole service (implementation and not interface) and not on methods in order to be sure that the @Transactional will apply to all.</p>
  
  <pre><code>@Transactional
  public class MyServiceImpl implements MyService {
    public void method1(){...}
    public void method2(){...}
  }
  </code></pre>
  
  <p>I also give you the way my DAOs are configured, they all extend the following class:</p>
  
  <pre><code>public abstract class JpaDAOSupport {
    protected EntityManager em;
    @PersistenceContext(type = PersistenceContextType.TRANSACTION)
    public void setEm(EntityManager em) {
      this.em = em;
    }
  }
  </code></pre>
  
  <p>EDIT2:
  I simplified my application in order to have only 1 service, and 1 DAO.</p>
  
  <p>MyService:</p>
  
  <pre><code>@Transactional
  public class MyServiceImpl implements MyService {
  
    private MyDAO myDAO;
  
    public void setMyDAO(MyDAO myDAO) {
      this.myDAO = myDAO;
    }
  
  
    @Override
    public void method1() {
      List&lt;String&gt; things = myDAO.getAll();
      System.out.println("Test size: " + things.size());
    }
  
    @Override
    public void method2() {
      List&lt;String&gt; things = myDAO.getAll();
      for (String thing : things) {
        System.out.println(thing);
      }
    }
  }
  </code></pre>
  
  <p>MyDAO</p>
  
  <pre><code>@Repository
  public class MyDAOImpl extends JpaDAOSupport implements MyDAO {
  
    @SuppressWarnings("unchecked")
    @Override
    public List&lt;String&gt; getAll() {
      Query query = em.createQuery("FROM " + Cfg.class.getName());
      List&lt;Cfg&gt; result = query.getResultList();
      List&lt;String&gt; realResult = new ArrayList&lt;String&gt;();
      for (Cfg cfg : result) {
        realResult.add(cfg.getKey());
      }
      return realResult;
    }
  }
  </code></pre>
  
  <p>Persistence config file:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"&gt;
  
  
    &lt;bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /&gt;
  
    &lt;bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/&gt;
  
    &lt;bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"/&gt;    
  
      &lt;bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"&gt;
          &lt;property name="entityManagerFactory" ref="entityManagerFactory" /&gt;
      &lt;/bean&gt;
  
      &lt;tx:annotation-driven transaction-manager="transactionManager" /&gt;
  
    &lt;bean id="my.package.dao.MyDAO" class="my.package.dao.jpa.MyDAOImpl" /&gt;
  
    &lt;bean id="my.package.service.MyService" class="my.package.service.impl.MyServiceImpl" init-method="method1"&gt;
      &lt;property name="myDAO" ref="my.package.dao.MyDAO" /&gt;
    &lt;/bean&gt;
  &lt;/beans&gt;
  </code></pre>
  
  <p>Note that i don't have access to the attribute "mode" for tx:annotation-driven.</p>
  
  <p>Here are the spring logs in mode DEBUG of the start up:</p>
  
  <pre><code>[...]
  k.beans.factory.support.DefaultListableBeanFactory  Creating shared instance of singleton bean 'entityManagerFactory'
  k.beans.factory.support.DefaultListableBeanFactory  Creating instance of bean 'entityManagerFactory'
  k.beans.factory.support.DefaultListableBeanFactory  Eagerly caching bean 'entityManagerFactory' to allow for resolving potential circular references
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [org.springframework.orm.jpa.LocalEntityManagerFactoryBean]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [org.springframework.orm.jpa.LocalEntityManagerFactoryBean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'beanClassLoader' of type [java.lang.ClassLoader]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'dataSource' of type [javax.sql.DataSource]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'entityManagerFactoryInterface' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'entityManagerInterface' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'jpaDialect' of type [org.springframework.orm.jpa.JpaDialect]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'jpaProperties' of type [java.util.Properties]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'jpaPropertyMap' of type [java.util.Map]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'jpaVendorAdapter' of type [org.springframework.orm.jpa.JpaVendorAdapter]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'nativeEntityManagerFactory' of type [javax.persistence.EntityManagerFactory]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'object' of type [javax.persistence.EntityManagerFactory]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'objectType' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'persistenceProvider' of type [javax.persistence.spi.PersistenceProvider]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'persistenceProviderClass' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'persistenceUnitInfo' of type [javax.persistence.spi.PersistenceUnitInfo]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'persistenceUnitName' of type [java.lang.String]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'singleton' of type [boolean]
  k.beans.factory.support.DefaultListableBeanFactory  Invoking afterPropertiesSet() on bean with name 'entityManagerFactory'
  ingframework.orm.jpa.LocalEntityManagerFactoryBean  Building JPA EntityManagerFactory for persistence unit 'null'
  ework.web.context.support.XmlWebApplicationContext  Bean 'entityManagerFactory' is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
  k.beans.factory.support.DefaultListableBeanFactory  Finished creating instance of bean 'entityManagerFactory'
  k.beans.factory.support.DefaultListableBeanFactory  Finished creating instance of bean 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0'
  k.beans.factory.support.DefaultListableBeanFactory  Creating shared instance of singleton bean 'org.springframework.aop.config.internalAutoProxyCreator'
  k.beans.factory.support.DefaultListableBeanFactory  Creating instance of bean 'org.springframework.aop.config.internalAutoProxyCreator'
  org.springframework.core.CollectionFactory          Creating [java.util.concurrent.ConcurrentHashMap]
  k.beans.factory.support.DefaultListableBeanFactory  Eagerly caching bean 'org.springframework.aop.config.internalAutoProxyCreator' to allow for resolving potential circular references
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [org.springframework.aop.framework.autoproxy.InfrastructureAdvisorAutoProxyCreator]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [org.springframework.aop.framework.autoproxy.InfrastructureAdvisorAutoProxyCreator]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'advisorAdapterRegistry' of type [org.springframework.aop.framework.adapter.AdvisorAdapterRegistry]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'applyCommonInterceptorsFirst' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'beanClassLoader' of type [java.lang.ClassLoader]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'beanFactory' of type [org.springframework.beans.factory.BeanFactory]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'customTargetSourceCreators' of type [[Lorg.springframework.aop.framework.autoproxy.TargetSourceCreator;]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'exposeProxy' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'frozen' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'interceptorNames' of type [[Ljava.lang.String;]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'opaque' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'optimize' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'order' of type [int]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'proxyClassLoader' of type [java.lang.ClassLoader]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'proxyTargetClass' of type [boolean]
  k.beans.factory.support.DefaultListableBeanFactory  Finished creating instance of bean 'org.springframework.aop.config.internalAutoProxyCreator'
  ework.web.context.support.XmlWebApplicationContext  Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@7d2796]
  ework.web.context.support.XmlWebApplicationContext  Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@1335207]
  ework.ui.context.support.UiApplicationContextUtils  Unable to locate ThemeSource with name 'themeSource': using default [org.springframework.ui.context.support.ResourceBundleThemeSource@6bbe7]
  k.beans.factory.support.DefaultListableBeanFactory  Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1989b5: defining beans [org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0,entityManagerFactory,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,my.package.dao.MyDAO,my.package.service.MyService]; root of factory hierarchy
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0'
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0'
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'entityManagerFactory'
  k.beans.factory.support.DefaultListableBeanFactory  Creating shared instance of singleton bean 'transactionManager'
  k.beans.factory.support.DefaultListableBeanFactory  Creating instance of bean 'transactionManager'
  k.beans.factory.support.DefaultListableBeanFactory  Eagerly caching bean 'transactionManager' to allow for resolving potential circular references
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [org.springframework.orm.jpa.JpaTransactionManager]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [org.springframework.orm.jpa.JpaTransactionManager]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'dataSource' of type [javax.sql.DataSource]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'defaultTimeout' of type [int]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'entityManagerFactory' of type [javax.persistence.EntityManagerFactory]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'failEarlyOnGlobalRollbackOnly' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'globalRollbackOnParticipationFailure' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'jpaDialect' of type [org.springframework.orm.jpa.JpaDialect]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'jpaProperties' of type [java.util.Properties]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'jpaPropertyMap' of type [java.util.Map]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'nestedTransactionAllowed' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'resourceFactory' of type [java.lang.Object]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'rollbackOnCommitFailure' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'transactionSynchronization' of type [int]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'transactionSynchronizationName' of type [java.lang.String]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'validateExistingTransaction' of type [boolean]
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'entityManagerFactory'
  k.beans.factory.support.DefaultListableBeanFactory  Creating shared instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
  k.beans.factory.support.DefaultListableBeanFactory  Creating instance of bean 'org.springframework.transaction.config.internalTransactionAdvisor'
  rk.autoproxy.InfrastructureAdvisorAutoProxyCreator  Did not attempt to auto-proxy infrastructure class [org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor]
  k.beans.factory.support.DefaultListableBeanFactory  Eagerly caching bean 'org.springframework.transaction.config.internalTransactionAdvisor' to allow for resolving potential circular references
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'advice' of type [org.aopalliance.aop.Advice]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'adviceBeanName' of type [java.lang.String]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'beanFactory' of type [org.springframework.beans.factory.BeanFactory]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'classFilter' of type [org.springframework.aop.ClassFilter]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'order' of type [int]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'perInstance' of type [boolean]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'pointcut' of type [org.springframework.aop.Pointcut]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'transactionAttributeSource' of type [org.springframework.transaction.interceptor.TransactionAttributeSource]
  k.beans.factory.support.DefaultListableBeanFactory  Creating shared instance of singleton bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0'
  k.beans.factory.support.DefaultListableBeanFactory  Creating instance of bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0'
  org.springframework.core.CollectionFactory          Creating [java.util.concurrent.ConcurrentHashMap]
  k.beans.factory.support.DefaultListableBeanFactory  Eagerly caching bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0' to allow for resolving potential circular references
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [org.springframework.transaction.annotation.AnnotationTransactionAttributeSource]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [org.springframework.transaction.annotation.AnnotationTransactionAttributeSource]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  k.beans.factory.support.DefaultListableBeanFactory  Finished creating instance of bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0'
  k.beans.factory.support.DefaultListableBeanFactory  Finished creating instance of bean 'org.springframework.transaction.config.internalTransactionAdvisor'
  k.beans.factory.support.DefaultListableBeanFactory  Invoking afterPropertiesSet() on bean with name 'transactionManager'
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
  k.beans.factory.support.DefaultListableBeanFactory  Finished creating instance of bean 'transactionManager'
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'org.springframework.aop.config.internalAutoProxyCreator'
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0'
  k.beans.factory.support.DefaultListableBeanFactory  Creating shared instance of singleton bean 'org.springframework.transaction.interceptor.TransactionInterceptor#0'
  k.beans.factory.support.DefaultListableBeanFactory  Creating instance of bean 'org.springframework.transaction.interceptor.TransactionInterceptor#0'
  rk.autoproxy.InfrastructureAdvisorAutoProxyCreator  Did not attempt to auto-proxy infrastructure class [org.springframework.transaction.interceptor.TransactionInterceptor]
  k.beans.factory.support.DefaultListableBeanFactory  Eagerly caching bean 'org.springframework.transaction.interceptor.TransactionInterceptor#0' to allow for resolving potential circular references
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [org.springframework.transaction.interceptor.TransactionInterceptor]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [org.springframework.transaction.interceptor.TransactionInterceptor]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'transactionAttributeSource' of type [org.springframework.transaction.interceptor.TransactionAttributeSource]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'transactionAttributeSources' of type [[Lorg.springframework.transaction.interceptor.TransactionAttributeSource;]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'transactionAttributes' of type [java.util.Properties]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'transactionManager' of type [org.springframework.transaction.PlatformTransactionManager]
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'transactionManager'
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0'
  k.beans.factory.support.DefaultListableBeanFactory  Invoking afterPropertiesSet() on bean with name 'org.springframework.transaction.interceptor.TransactionInterceptor#0'
  k.beans.factory.support.DefaultListableBeanFactory  Finished creating instance of bean 'org.springframework.transaction.interceptor.TransactionInterceptor#0'
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
  k.beans.factory.support.DefaultListableBeanFactory  Creating shared instance of singleton bean 'my.package.dao.MyDAO'
  k.beans.factory.support.DefaultListableBeanFactory  Creating instance of bean 'my.package.dao.MyDAO'
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [my.package.dao.jpa.JpaDAOSupport]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [my.package.dao.jpa.JpaDAOSupport]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'em' of type [javax.persistence.EntityManager]
  amework.beans.factory.annotation.InjectionMetadata  Found injected method on class [my.package.dao.jpa.MyDAOImpl]: PersistenceElement for public void my.package.dao.jpa.JpaDAOSupport.setEm(javax.persistence.EntityManager)
  k.beans.factory.support.DefaultListableBeanFactory  Eagerly caching bean 'my.package.dao.MyDAO' to allow for resolving potential circular references
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [my.package.dao.jpa.MyDAOImpl]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [my.package.dao.jpa.MyDAOImpl]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'all' of type [java.util.List]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'em' of type [javax.persistence.EntityManager]
  amework.beans.factory.annotation.InjectionMetadata  Processing injected method of bean 'my.package.dao.MyDAO': PersistenceElement for public void my.package.dao.jpa.JpaDAOSupport.setEm(javax.persistence.EntityManager)
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'entityManagerFactory'
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
  org.springframework.core.CollectionFactory          Creating [java.util.concurrent.ConcurrentHashMap]
  g.springframework.aop.framework.JdkDynamicAopProxy  Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [my.package.dao.jpa.MyDAOImpl@1298826]
  k.beans.factory.support.DefaultListableBeanFactory  Finished creating instance of bean 'my.package.dao.MyDAO'
  k.beans.factory.support.DefaultListableBeanFactory  Creating shared instance of singleton bean 'my.package.service.MyService'
  k.beans.factory.support.DefaultListableBeanFactory  Creating instance of bean 'my.package.service.MyService'
  k.beans.factory.support.DefaultListableBeanFactory  Eagerly caching bean 'my.package.service.MyService' to allow for resolving potential circular references
  g.springframework.beans.CachedIntrospectionResults  Getting BeanInfo for class [my.package.service.impl.MyServiceImpl]
  g.springframework.beans.CachedIntrospectionResults  Caching PropertyDescriptors for class [my.package.service.impl.MyServiceImpl]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'class' of type [java.lang.Class]
  g.springframework.beans.CachedIntrospectionResults  Found bean property 'myDAO' of type [my.package.dao.MyDAO]
  k.beans.factory.support.DefaultListableBeanFactory  Returning cached instance of singleton bean 'my.package.dao.MyDAO'
  k.beans.factory.support.DefaultListableBeanFactory  Invoking init method  'method1' on bean with name 'my.package.service.MyService'
  anagerCreator$SharedEntityManagerInvocationHandler  Creating new EntityManager for shared EntityManager invocation
  .springframework.orm.jpa.EntityManagerFactoryUtils  Closing JPA EntityManager
  k.beans.factory.support.DefaultListableBeanFactory  Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1989b5: defining beans [org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0,entityManagerFactory,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,my.package.dao.MyDAO,my.package.service.MyService]; root of factory hierarchy
  k.beans.factory.support.DefaultListableBeanFactory  Retrieved dependent beans for bean 'my.package.dao.MyDAO': [my.package.service.MyService]
  k.beans.factory.support.DefaultListableBeanFactory  Retrieved dependent beans for bean 'transactionManager': [org.springframework.transaction.interceptor.TransactionInterceptor#0]
  k.beans.factory.support.DefaultListableBeanFactory  Retrieved dependent beans for bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0': [org.springframework.transaction.config.internalTransactionAdvisor, org.springframework.transaction.interceptor.TransactionInterceptor#0]
  k.beans.factory.support.DefaultListableBeanFactory  Retrieved dependent beans for bean 'entityManagerFactory': [transactionManager, my.package.dao.MyDAO]
  mework.beans.factory.support.DisposableBeanAdapter  Invoking destroy() on bean with name 'entityManagerFactory'
  ingframework.orm.jpa.LocalEntityManagerFactoryBean  Closing JPA EntityManagerFactory for persistence unit 'null'
  org.springframework.web.context.ContextLoader       Context initialization failed
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'my.package.service.MyService' defined in class path resource [config/persistenceContext.xml]: Invocation of init method failed; nested exception is org.springframework.orm.jpa.JpaSystemException: org.hibernate.SessionException: Session is closed!; nested exception is javax.persistence.PersistenceException: org.hibernate.SessionException: Session is closed!
  </code></pre>
  
  <p>I'd like to understand why the transactions are not opened, and how could i solve this problem ?</p>
  
  <p>Thanks,</p>