Problema com JPA Toplink (Tomcat/Postgre) - EntityManager nulo

1 resposta
A

Alguem sabe por que ele volta nulo quando chamo

Persistence.createEntityManagerFactory(“projeto_jpa”).createEntityManager()

Em apenas algumas das classes e em outras não? e não é toda hora, as vezes funciona, mas qdo da erro capota a aplicação inteira e não faz mais acesso ao banco…
persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>




oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider

br.com.model.Usuario
br.com.model.Acesso
br.com.model.Equipe
br.com.model.Departamentot

<properties>
		<property name="toplink.logging.level" value="FINE" />
		<property name="toplink.jdbc.driver" value="org.postgresql.Driver" />
		<property name="toplink.jdbc.url"
			value="jdbc2:postgresql://servidor:5432/itto?charSet=UTF-8" />
		<property name="toplink.jdbc.user" value="usuario" />				
		<property name="toplink.jdbc.password" value="senha"/>
	</properties>

</persistence-unit>

Classe:
public class EUsuario {

private EntityManagerFactory _factory;
private EntityManager _manager;

public EUsuario() {
	_factory = Persistence.createEntityManagerFactory("projeto_jpa");
	[b]_manager = _factory.createEntityManager();[/b]
}

.
.
.}

Da erro na linha em negrito, nullpointer pois nao criou o factory, agora a questão é, por que?

Erro:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/projeto].[BUsuario] - Servlet.service() for servlet BUsuario threw exception

java.lang.NullPointerException

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:208)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:84)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:127)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:121)

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:76)

at br.com.entity.EUsuario.(EUsuario.java:52)

at br.com.control.CUsuario.getLast(CUsuario.java:229)

at br.com.boundary.BUsuario.showEdit(BUsuario.java:489)

at br.com.boundary.BUsuario.run(BUsuario.java:101)

at br.com.boundary.BUsuario.doGet(BUsuario.java:90)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)

at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

at java.lang.Thread.run(Thread.java:595)

1 Resposta

Fabio_Kung

Oi Ale,

Não chame Persistence.createEntityManagerFactory(“projeto_jpa”) toda vez que precisar de um EntityManager. A EntityManagerFactory é um objeto bem pesado que só deve ser criado uma vez (na maioria dos casos).

Use sempre a mesma EntityManagerFactory para construir todos os seus EntityManagers.

Criado 22 de dezembro de 2006
Ultima resposta 23 de dez. de 2006
Respostas 1
Participantes 2