无法查找 JNDI 名称 [javax.transaction.TransactionManager]

Rad*_*v.B 3 java jboss vaadin wildfly

在我的 JavaEE 应用程序中,我有两个 JAR(实体、接口)、一个 EJB(服务)和一个 WAR (Vaadin) 项目。应用服务器是WildFly(JBoss)。部署项目后出现如下错误。GlassFish 一切都很好。

javax.servlet.ServletException:com.vaadin.server.ServiceException:javax.ejb.EJBException:org.hibernate.engine.jndi.JndiException:无法查找JNDI名称[javax.transaction.TransactionManager]

null:javax.naming.NameNotFoundException:project1-ear-1.0.0.0/project1-Services-ejb1.0.0.0/PersonServiceImpl!com.domain.project1.interfaces.PersonService --服务jboss.naming.context.java。“project1 -ear-1.0.0.0"."project1-Services-ejb1.0.0.0"."PersonServiceImpl!com.domain.project1.interfaces.PersonService

我的查找:

java:global/project1-ear-1.0.0.0/project1-Services-ejb-1.0.0.0/PersonServiceImpl!com.domain.project1.interfaces.PersonService

怎么了?感谢帮助!

小智 5

由于您要在 Wildfly 上部署它,因此您需要更改 > persistence.xml 中的属性

供应商来自

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
Run Code Online (Sandbox Code Playgroud)

<provider>org.hibernate.ejb.HibernatePersistence</provider>
Run Code Online (Sandbox Code Playgroud)

删除 hibernate.transaction.jta.platform 属性

<name="hibernate.transaction.jta.platform" >

<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" />
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.WeblogicJtaPlatform" />
Run Code Online (Sandbox Code Playgroud)

并添加以下内容

<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/> 
Run Code Online (Sandbox Code Playgroud)

这应该可以解决事务管理器问题。