Problemas com JTA

Galera,

Não estou conseguindo acessar o banco usando JTA.

O erro é esse:

Grave: javax.persistence.PersistenceException: [PersistenceUnit: GerenciaDeFrotaPU] Unable to build EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
	at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
	at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
	at br.com.mitter.dao.EntityManagerHelper.init(EntityManagerHelper.java:26)
	at br.com.mitter.dao.EntityManagerHelper.getEntityManager(EntityManagerHelper.java:38)
	at br.com.mitter.dao.DaoPrincipal.editar(DaoPrincipal.java:71)
	at br.com.mitter.controle.LogradouroControle.atualizarLogradouro(LogradouroControle.java:25)
	at br.com.mitter.janela.JanelaLogradouro.salvar(JanelaLogradouro.java:70)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.sun.el.parser.AstValue.invoke(AstValue.java:254)
	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
Caused by: org.hibernate.HibernateException: Could not instantiate TransactionManagerLookup 'org.hibernate.transaction.JDBCTransaction'
	at org.hibernate.transaction.TransactionManagerLookupFactory.getTransactionManagerLookup(TransactionManagerLookupFactory.java:47)
	at org.hibernate.transaction.JTATransactionFactory.configure(JTATransactionFactory.java:48)
	at org.hibernate.transaction.TransactionFactoryFactory.buildTransactionFactory(TransactionFactoryFactory.java:51)
	at org.hibernate.cfg.SettingsFactory.createTransactionFactory(SettingsFactory.java:418)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:138)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
	... 49 more

Grave: 	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
Grave: 	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
Grave: 	at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
Grave: 	at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
Grave: 	at br.com.mitter.dao.EntityManagerHelper.init(EntityManagerHelper.java:26)
Grave: 	at br.com.mitter.dao.EntityManagerHelper.getEntityManager(EntityManagerHelper.java:38)
Grave: 	at br.com.mitter.dao.DaoPrincipal.editar(DaoPrincipal.java:71)
Grave: 	at br.com.mitter.controle.LogradouroControle.atualizarLogradouro(LogradouroControle.java:25)
Grave: 	at br.com.mitter.janela.JanelaLogradouro.salvar(JanelaLogradouro.java:70)
Grave: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Grave: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
Grave: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Grave: 	at java.lang.reflect.Method.invoke(Method.java:601)
Grave: 	at com.sun.el.parser.AstValue.invoke(AstValue.java:254)
Grave: 	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
Grave: 	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
Grave: 	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
Grave: 	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
Grave: 	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
Grave: 	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
Grave: 	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
Grave: 	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
Grave: 	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
Grave: 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
Grave: 	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
Grave: 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
Grave: 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
Grave: 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
Grave: 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
Grave: 	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
Grave: 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
Grave: 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
Grave: 	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
Grave: 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
Grave: 	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
Grave: 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
Grave: 	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
Grave: 	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
Grave: 	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
Grave: 	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
Grave: 	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
Grave: 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
Grave: 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
Grave: 	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
Grave: 	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
Grave: 	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
Grave: 	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
Grave: 	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
Grave: 	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
Grave: 	at java.lang.Thread.run(Thread.java:722)
Grave: Caused by: org.hibernate.HibernateException: Could not instantiate TransactionManagerLookup 'org.hibernate.transaction.JDBCTransaction'
Grave: 	at org.hibernate.transaction.TransactionManagerLookupFactory.getTransactionManagerLookup(TransactionManagerLookupFactory.java:47)
Grave: 	at org.hibernate.transaction.JTATransactionFactory.configure(JTATransactionFactory.java:48)
Grave: 	at org.hibernate.transaction.TransactionFactoryFactory.buildTransactionFactory(TransactionFactoryFactory.java:51)
Grave: 	at org.hibernate.cfg.SettingsFactory.createTransactionFactory(SettingsFactory.java:418)
Grave: 	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:138)
Grave: 	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
Grave: 	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
Grave: 	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
Grave: 	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
Grave: 	... 49 more

O meu arquivo de Persistencia:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
    <persistence-unit name="GerenciaDeFrotaPU" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>jdbc/rastreamento</jta-data-source>
  
        <class>br.com.mitter.modelo.FabricanteEquipamento</class>
        <class>br.com.mitter.modelo.Permissao</class>
        <class>br.com.mitter.modelo.Tecnico</class>
        <class>br.com.mitter.modelo.Linha</class>
        <class>br.com.mitter.modelo.ProprietarioVeiculo</class>
        <class>br.com.mitter.modelo.UsuarioPermissao</class>
        <class>br.com.mitter.modelo.ModeloEquipamento</class>
        <class>br.com.mitter.modelo.Usuario</class>
        <class>br.com.mitter.modelo.Equipamento</class>
        <class>br.com.mitter.modelo.Logradouro</class>
        <class>br.com.mitter.modelo.Bairro</class>
        <class>br.com.mitter.modelo.Transmissao</class>
        <class>br.com.mitter.modelo.Cor</class>
        <class>br.com.mitter.modelo.HistoricoTipo</class>
        <class>br.com.mitter.modelo.Telefone</class>
        <class>br.com.mitter.modelo.TelefoneTipo</class>
        <class>br.com.mitter.modelo.Operadora</class>
        <class>br.com.mitter.modelo.Comando</class>
        <class>br.com.mitter.modelo.Pacote</class>
        <class>br.com.mitter.modelo.Veiculo</class>
        <class>br.com.mitter.modelo.Estado</class>
        <class>br.com.mitter.modelo.FabricanteVeiculo</class>
        <class>br.com.mitter.modelo.Plano</class>
        <class>br.com.mitter.modelo.ModeloVeiculo</class>
        <class>br.com.mitter.modelo.Proprietario</class>
        <class>br.com.mitter.modelo.Historico</class>
        <class>br.com.mitter.modelo.Motorista</class>
        <class>br.com.mitter.modelo.Cidade</class>
        <properties>
        
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
            <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JDBCTransaction" />
        </properties>
    </persistence-unit>
</persistence>

Pedaco do meu codigo que eu chamo o persitence

private static EntityManagerFactory emf;
    private static ThreadLocal<EntityManager> threadLocal = new ThreadLocal<EntityManager>();

    private static void init() throws FrotaWebException {
        emf = Persistence.createEntityManagerFactory("GerenciaDeFrotaPU");
    }

    public static EntityManager getEntityManager() throws FrotaWebException {
        EntityManager manager = threadLocal.get();
        try {
            if (manager == null || !manager.isOpen()) {
                init();
                manager = emf.createEntityManager();
                threadLocal.set(manager);
            }
        } catch (Exception e) {
            init();
            manager = emf.createEntityManager();
            threadLocal.set(manager);
        }
        return manager;
    }

Você quer usar JTA ou RESOURCE_LOCAL?

Por que você configurou como JTA: jdbc/rastreamento

Mas está utilizando como local: emf = Persistence.createEntityManagerFactory(“GerenciaDeFrotaPU”);

JTA você utiliza injeção e R_LOCAL você faz tudo na mão.

Mas quando eu faço isso:


import br.com.teste.modelo.Bairro;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author Vinicius
 */
@Stateless
public class BairroFacade extends AbstractFacade<Bairro> {
    @PersistenceContext(unitName = "GerenciaDeFrotaPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public BairroFacade() {
        super(Bairro.class);
    }
    
}

O meu EntityManager em fica null.
Será que esta faltando alguma configuração?

Por isso eu usei o esquema de fazer na mão.

Quando você deixa por injeção apenas, aparece alguma msg de erro?

Coloquei a @EJB e quase deu certo

agora esta dando esse erro:

Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.mitter.modelo.Logradouro
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
	at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
	... 69 more

Essa classe que estou tentando salvar nao tem nenhuma classe que representa FK.

[quote=vcsmetallica]Coloquei a @EJB e quase deu certo

agora esta dando esse erro:

[code]
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.mitter.modelo.Logradouro
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
… 69 more

[/code]Aí está falando que existe o: Logradouro como detached.
Aqui mostra como resolver o detached: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

Essa classe que estou tentando salvar nao tem nenhuma classe que representa FK.

[/quote]