Olá Amigos,
Estou tentando configurar o JPA 2 com datasource, a minha aplicação tem a seguinte tecnologia: jsf 2, Hibernate 3.6.7, tomcat 7 utilizando eclipse indigo
Quando vou fazer um exemplo básico sem utilizar data source funciona bem com a seguinte configuração
persistence.xml localizado no META-INF<?xml version="1.0" encoding="UTF-8"?>
<persistence 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/s/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="sei_hibernate"
transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="123" />
<property name="javax.persistence.jdbc.url"
value="jdbc:postgresql://localhost:5432/notasfiscais" />
</properties>
</persistence-unit>
</persistence>
para testar se a conexão com o banco utilizo
package br.zenas.teste; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence;public class TesteDaJPAConfigBanco {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("sei_hibernate");
EntityManager em = emf.createEntityManager();
em.close();
emf.close();}
}
Sem quando tento utilizar o data source, não funciona de jeito nenhum
utilizei os seguintes passos dos site's
http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/configuration.html
http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html
me data source no tomcat está da seguinte forma
Web Database jdbc/seiweb_jndi javax.sql.DataSource Container
meu persistence que estava funcionando da maneira sem o data source
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"
version="2.0">
org.hibernate.ejb.HibernatePersistence
java:/seiweb_jndi
classe de teste
package br.zenas.teste; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence;public class TesteDaJPAConfigBanco {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("sample");
EntityManager em = emf.createEntityManager();
em.close();
emf.close();}
}
quando eu subo o servidor e rodo a classe de teste me é apresentado o seguinte erro
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/campanhaeleitoral/sei_hibernate/lib/slf4j-jdk14-1.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/campanhaeleitoral/sei_hibernate/lib/slf4j-log4j12-1.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/campanhaeleitoral/teste/WebContent/WEB-INF/lib/slf4j-jdk14-1.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/campanhaeleitoral/teste/WebContent/WEB-INF/lib/slf4j-log4j12-1.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
03/09/2011 14:22:28 org.hibernate.annotations.common.Version
INFO: Hibernate Commons Annotations 3.2.0.Final
03/09/2011 14:22:28 org.hibernate.cfg.Environment
INFO: Hibernate 3.6.7.Final
03/09/2011 14:22:28 org.hibernate.cfg.Environment
INFO: hibernate.properties not found
03/09/2011 14:22:28 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : javassist
03/09/2011 14:22:28 org.hibernate.cfg.Environment
INFO: using JDK 1.4 java.sql.Timestamp handling
03/09/2011 14:22:28 org.hibernate.ejb.Version
INFO: Hibernate EntityManager 3.6.7.Final
03/09/2011 14:22:28 org.hibernate.cfg.Configuration applyHibernateValidatorLegacyConstraintsOnDDL
INFO: Hibernate Validator not found: ignoring
03/09/2011 14:22:28 org.hibernate.cfg.search.HibernateSearchEventListenerRegister enableHibernateSearch
INFO: Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
03/09/2011 14:22:28 org.hibernate.util.NamingHelper getInitialContext
INFO: JNDI InitialContext properties:{}
03/09/2011 14:22:28 org.hibernate.connection.DatasourceConnectionProvider configure
GRAVE: Could not find datasource: java:/seiweb_jndi
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:143)
at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:51)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:90)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at br.zenas.teste.TesteDaJPAConfigBanco.main(TesteDaJPAConfigBanco.java:14)
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: sample] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at br.zenas.teste.TesteDaJPAConfigBanco.main(TesteDaJPAConfigBanco.java:14)
Caused by: org.hibernate.HibernateException: Could not find datasource
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:79)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:143)
at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:51)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:90)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
... 4 more
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
... 11 more
Agradeço a quem puder me ajudar.
Abraços