Erro "Could not resolve a persistence unit" em servidor web

Boa Noite,

Estou desenvolvendo um sistema para uma empresa e resolvi desenvolvê-la em jsf. Já dei uma adiantada bem grande nas funcionalidades do sistema e localmente está tudo rodando certinho, mas quando coloco em um servidor que hospedei a aplicação ele dá o seguinte erro:

Could not resolve a persistence unit corresponding to the persistence-context-ref-name [GerenciadorEmpresaBean/em] in the scope of the module called

Já tentei de várias formas resolver o problema, acho que li a maioria dos tópicos encontrados no google, mas não consegui ajeitar. Já coloquei persistence-context-ref no web.xml, coloquei “name” e “unitname” na anotação @PersistenceContext.

Minha aplicação está empacotada em um EAR( WAR, EJB ), alguem teria alguma solução? Pois nada está funcionado lembrando que localmente funciona tudo certinho. Segue os códigos abaixo:

GerenciadorEmpresaEJB.java:

@Stateless
@Remote
public class GerenciadorEmpresaEJB implements GerenciadorEmpresa{

	@PersistenceContext(unitName="ProjRegateioEJB")
	private EntityManager em;
	
	@Override
	public void cadastrarEmpresa(Empresa e) {
		em.persist(e);
	}

...

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="ProjRegateioEJB" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <jta-data-source>jdbc/__teste2</jta-data-source> <class>model.Empresa</class> <properties> <property name="eclipselink.ddl-generation" value="create-tables"/> </properties> </persistence-unit> </persistence>

Como você registrou esse datasource no server??

No caso eu criei, no administrador do glassfish, um datasource com esse mesmo nome: jdbc/__teste2.

Alguem tem alguma solução?

Seu persistence.xml está na pasta META-INF dentro de src, e também está no classpath da aplicação?

Olá Carlos,

O meu persistence.xml, está somente no projeto EJB dentro do META-INF. Eu teria que adicioná-lo em outros locais?

Como faço pra adicionar o persistence.xml no classpath do meu EAR?

Oi Gelatti, com relação ao projeto EJB não sei direito. Mas quando desenvolvo aplicações JSF2 + JPA2 eu coloco ele dentro de src/META-INF. E também adiciono ele ao classpath do projeto, clicando com o botão direito em cima dele (persistence.xml) e clique em “add to build path”.

Valeu Carlos, mas aqui não aparece nem essa opção quando clico no arquivo. Alguem saberia alguma solução para esse problema usando JSF + EJB + JPA?