Olá pessoal, to precisando de uma big ajuda…
Estou desenvolvendo um aplicação Web, dividida em 2 projetos, o primeiro é um JPA Project denominado MeuProjetoRegras, e o segundo é um JSF Project denominado MeuProjetoWeb
Uso JBoss 5.0 como servidor de aplicação;
As referência entre ambos estão funcionando.
Meu problema é o seguinte, eu não estou conseguindo Instanciar a EnityManagerFactory.
meu arquivos estão assim:
MeuProjetoRegras\src\META-INF\persistence.xml
[color=green]<?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=“MeuProjetoRegras” transaction-type=“JTA”>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/MeuProjetoWebDS</jta-data-source>
<properties>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
<property name="hibernate.hbm2ddl.auto" value="none" />
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />
<property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:DB" />
<property name="hibernate.connection.username" value="x" />
<property name="hibernate.connection.password" value="y" />
</properties>
</persistence-unit>
</persistence>[/color]
MeuProjetoWeb\WebContent\META-INF\MeuProjetoWeb-ds.xml
[color=green][color=#444444]<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MeuProjetoWebDS</jndi-name>
<connection-url>jdbc:oracle:thin:@localhost:DB</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>x</user-name>
<password>y</password>
</local-tx-datasource>
</datasources>[/color][/color]
MeuProjetoRegras\src\utils\PersistenceUtil.java
[color=darkblue]public final class PersistenceUtil {
private static final String UNIT_NAME = “MeuProjetoRegras”;
private static EntityManagerFactory FACTORY;
public static final ThreadLocal<EntityManager> SESSION = new ThreadLocal<EntityManager>();
public static EntityManager currentEntityManager() {
EntityManager manager = (EntityManager) SESSION.get();
if (manager == null) {
loadInstance();
manager = FACTORY.createEntityManager();
SESSION.set(manager);
}
return manager;
}
public static void closeEntityManager() {
EntityManager manager = (EntityManager) SESSION.get();
if (manager != null) {
manager.close();
}
SESSION.set(null);
}
private static synchronized void loadInstance() {
if (FACTORY == null) {
FACTORY = Persistence.createEntityManagerFactory(UNIT_NAME);
}
}
}[/color]
O Jboss sobe direito sem dar nenhum erro ou Warnning, porem quando eu executo essa linha aki:
FACTORY = Persistence.createEntityManagerFactory(UNIT_NAME);
é lançada a seguinte excessão:
[color=red]16:34:49,632 INFO [SessionFactoryImpl] building session factory
16:34:49,866 INFO [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
16:35:30,945 ERROR [application] java.lang.ExceptionInInitializerError
javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:189)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:91)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:92)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:325)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ExceptionInInitializerError
at br.gov.infraero.tecaplus.view.EmbalagemFlow.salvar(EmbalagemFlow.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:170)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
… 36 more
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: TecaplusRegras] 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(Persistence.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at utils.PersistenceUtil.loadInstance(PersistenceUtil.java:36)
at utils.PersistenceUtil.currentEntityManager(PersistenceUtil.java:19)
at dao.EmbalagemDao.<init>(EmbalagemDao.java:13)
at dao.EmbalagemDao.<clinit>(EmbalagemDao.java:14)
… 45 more
Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:361)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
… 52 more[/color]
E preciso de ajuda pois estou com esse erro a alguns dias…
Detalhe o persistence.xml e o PersistenceUtil.java estão funcionando, pq os testei em contexto Desktop sem o <jta-data-source> e funcionou tudo certinho
Então deduzo que seja erro de JNDI, mas não sei o por que
se puderem me ajudar eu agradeço muito
Abraço a todos