Tenho uma aplicação que usa Spring 3 no container web, e tenho um modulo EJB 3, ambos rodando no JBOSS 4.2.3, faço a injeção do EJB no spring via Annotation @EJB, até ai tudo bem funciona normal, mas estou tendo o velho problema de lazy, configurei o OpenEntityManagerInViewFilter da seguinte forma:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in class path resource [org/springmvc/resources/spring-context.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: ELBMODULE] Unable to build EntityManagerFactory
Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
Já procurei na net mas não achei algo que resolvesse.
ERROR [LazyInitializationException] failed to lazily initialize a collection of role: org.elb.entitys.Estado.cidades, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.elb.entitys.Estado.cidades, no session or session was closed
Então pelo que eu sei o OpenSessionInViewFilter é para quando se usa a camada de persistência pelo Spring, no caso de EJB toda a parte de persistência fica no EJB.
E uma arquitetura distribuida de onde se pode acessar os EJBs de varias modos. O problema esta em reabrir a sessão pelo OpenEntityManagerInViewFilter para buscar os dados em Lazy, com Spring puro e fácil configurar usando o OpenSessionInViewFilter, mas com EJB3 JPA não é tão simples, ele até acha a referencia do JNDI do entityManagerFactory mas não reabre a sessão.
uso:
Jboss 4.2 -> bibliotecas hibernate , persistence, etc… do Jboss.
Spring 3.0.4.RELEASE -> configurado com anotações
1 modulo EAR
1 modulo WAR