O que causa "Could not resolve a persistence unit" exception?

4 respostas
R

Olá pessoal,

Eu tinha um projeto web que funcionava muito bem quando eu usava apenas um persistence unit. Quando houve a necessidade de utilizar outro (acessar outro banco de dados) comecou a dar problemas. Não consigo fazer o deploy no servidor pois ele alega que ele não encontra esta nova persistence unit! (“Runtime Exception - Could not resolve a persistence unit corresponding to the persistence-context-ref-name []”)

Porque este erro ocorre? Criei a persistence unit pelo Netbeans e “sei” que sua configuração está adequada. Na minha classe eu possuia apenas um EntityManager marcado com @PersistenceContext. Agora que são dois, o segundo (na ordem de inserção do Persistence.xml) não é encontrado - se eu trocar a ordem no XML ele dará erro porém apontando para a outra unidade de persistencia.

Porque? O que devo fazer para que ele encontre as duas unidades de persistencia?

Estou com a seguinte notação no meu entity manager:

@PersistenceContext(name="ASN", unitName="ASN") EntityManager em;

@PersistenceContext(name="SIMET_MAIN", unitName="SIMET_MAIN") EntityManager emMain;

Sendo que o nome da unidade de persistência no XML são estes que estão escritos acima!

Muito obrigado,

Ricardo

4 Respostas

Roger75

Acredito eu que você deva criar o outro persistence.xml num jar separado, como se fosse um projeto à parte, e depois fazer referência a ele no classpath do projeto “principal”.

R

Como devo fazer isso?

Pq ele permite adicionar outras persistence units em um mesmo xml, inclusive sendo possível acessar outro banco se eu tenho que usar um arquivo separado?

R

Resolvi em parte trocando em todas as minhas classes a anotation.

Agora elas são apenas:

Tive de trocar até nas classes de testes, agora ele está compilando porém estou com outro problema:

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.IllegalStateException: Local transaction already has 1 non-XA Resource: cannot add more resources. Error Code: 0

Estou procurando no google qualquer coisa aviso.

R

Resolvi o problema. Criei outra classe que acessava esta outra persistence unit. Conclui que realmente não seria possível fazer isso sem um driver XA do sql. Agora as “querys” são feitas depois que a outra já acabou.

Criado 24 de novembro de 2010
Ultima resposta 26 de nov. de 2010
Respostas 4
Participantes 2