domingo, 22 de novembro de 2009

EJB3 entities with JBoss AS

Problema:
Não consigo iniciar o servidor de aplicação JBoss com persistência JPA, utilizando o transaction-type = RESOURCE_LOCAL.
Mensagem exibida pelo JBoss:
-------------------------------------------------------------------------------------------------------------------------
DEPLOYMENTS IN ERROR:
Deployment "persistence.unit:unitName=#webjpa" is in error due to the following reason(s): java.lang.RuntimeException: Specification violation [EJB3 JPA 6.2.1.2] - You have not defined a jta-data-source for a JTA enabled persistence context named: webjpa
-------------------------------------------------------------------------------------------------------------------------

Solução:

Para usar o transaction-type RESOURCE_LOCAL,
é necessário definir a tag non-jta-datasource ao invés de jta-data-source.

É importante saber que quando se utiliza non-jta-datasource, o desenvolvedor torna-se
responsável pelo EntityManager
, ou seja, deve-se criar através do EntityManagerFactory
que pode ser criado manualmente ou injetado em "managed classes" como EJBs, Managed Beans, Servlets e etc.



Referências:
[1] - http://jcp.org/aboutJava/communityprocess/final/jsr220/index.html
[2] - http://www.jboss.org/file-access/default/members/jbossejb3/freezone/docs/reference/1.0.7/html/entityconfig.html
[3] - http://openejb.apache.org/3.0/jpa-concepts.html

Nenhum comentário:

Postar um comentário