JndiException: Unable to lookup JNDI name [java:jboss/TransactionManager]
luwal Aug 9, 2019 6:08 AMThis exception I have got in time of deployment for most simple EJB+JPA application (for xa-datasource) without maven pom (WildFly 16/17, template was generated by Eclipse 2019-6 - File -> New -> EJB Project):
Project's Java classes are not essential, may by Entity-POJO only (very simple too - id and message fields with getters/setters) as exception thrown on deployment stage.
I've tried to find similar case for app deployment but without success. It's some strange situation. Especially, TransactionManager is present on JNDI and shown on Admin page:
Summary for error on log:
ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "MulticEJB.jar")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"MulticEJB.jar#MulticEJB\"" => "javax.persistence.PersistenceException: [PersistenceUnit: MulticEJB] Unable to build Hibernate SessionFactory
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: MulticEJB] Unable to build Hibernate SessionFactory
Caused by: org.hibernate.engine.jndi.JndiException: unable to find transaction manager
Caused by: org.hibernate.engine.jndi.JndiException: Unable to lookup JNDI name [java:jboss/TransactionManager]
Caused by: javax.naming.NameNotFoundException: jboss -- service jboss.naming.context.java.jboss.exported.jboss"}}
Configs is:
jndi.properties
java.naming.factory.initial=org.wildfly.naming.client.WildFlyInitialContextFactory
java.naming.provider.url=http-remoting://localhost:8080
# credential as login to Admin page
java.naming.security.principal=master
java.naming.security.credentials=masterpass
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="MulticEJB" transaction-type="JTA">
<jta-data-source>java:/MySqlTestXA</jta-data-source>
<class>dev.packs.entity.TableOne</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
</persistence-unit>
</persistence>
standalone.xml
<xa-datasource jndi-name="java:/MySqlTestXA" pool-name="MySqlTestXA">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
test
</xa-datasource-property>
<xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
<driver>mysql</driver>
<xa-pool>
<min-pool-size>2</min-pool-size>
<max-pool-size>10</max-pool-size>
</xa-pool>
<security>
<user-name>test-user</user-name>
<password>123456</password>
</security>
</xa-datasource>
<driver name="mysql" module="com.mysql"/>
module.xml
<?xml version='1.0' encoding='UTF-8'?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-8.0.17.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
P.S. I suppose that my experience is not enought for XA-datasource and Narayana details but I can't to find the way to go futher and deep (JNDI? XA? Hibernate? pom-configuration only? etc.)