Using Enterprise DB edb-jdbc-42.2.12.1.jar , the driver is com.edb.Driver which is in META-INF/services/java.sql.Driver.
Bundle-Description: Java JDBC 4.2 (JRE 8+) driver for EnterpriseDB database
Implementation-Title: EnterpriseDB JDBC Driver - JDBC 4.2
This configuration:
<datasource jndi-name="java:jboss/PostgresDS" pool-name="PostgresDS"> <connection-url>jdbc:postgresql://localhost:5432/postgresdb</connection-url> <driver>postgresql</driver> <security> <user-name>admin</user-name> <password>admin</password> </security> <validation> <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/> <validate-on-match>true</validate-on-match> <background-validation>false</background-validation> <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/> </validation> </datasource> <drivers> <driver name="h2" module="com.h2database.h2"> <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> </driver> <driver name="postgresql" module="com.postgresql"> <xa-datasource-class>com.edb.xa.PGXADataSource</xa-datasource-class> </driver> </drivers>
Throws this error below:
Throws this error below:
Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/PostgresDS at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:690) at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:440) at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:789) at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:152) ... 58 more Caused by: javax.resource.ResourceException: IJ031084: Unable to create connection at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:364) at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:371) at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:287) at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.createConnectionEventListener(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1328) at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:505) at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getTransactionNewConnection(AbstractPool.java:770) at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:666) at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:624) ... 61 more Caused by: javax.resource.ResourceException: IJ031083: Wrong driver class [com.edb.Driver] for this connection URL [jdbc:postgresql://localhost:5432/postgresdb] at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:337) ... 68 more
You can also specify <driver-class>com.edb.Driver</driver-class> and get the same error.
The error is misleading because it is saying the driver class com.edb.Driver is wrong, but the actual issue is a <datasource> is being defined but the driver only has <xa-datasource-class> , so it is wanting the <datasource-class> to be specified such as this:
<driver name="enterprisedb" module="com.edb"> <datasource-class>com.edb.ds.PGSimpleDataSource</datasource-class> <xa-datasource-class>com.edb.xa.PGXADataSource</xa-datasource-class> </driver>
com.edb.xa.PGXADataSource implements XADataSource but not DataSource. Some other jdbc datasources implement both such as
org.h2.jdbcx.JdbcDataSource implements XADataSource, DataSource ...
Since H2 does not complain, it is probably IronJacamar using the xa-datasource-class and casting to DataSource , though we would have to check the code.
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}"> <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> <driver>h2</driver> <security> <user-name>sa</user-name> <password>sa</password> </security> </datasource> <drivers> <driver name="h2" module="com.h2database.h2"> <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> </driver> </drivers>
For this error, it should say something more like com.edb.xa.PGXADataSource does not implement javax.sql.DataSource
- duplicates
-
JBEAP-26217 [GSS](7.4.z) WFLY-18703 - Misleading error message for XA DataSource class
- Closed
- is related to
-
JBEAP-26217 [GSS](7.4.z) WFLY-18703 - Misleading error message for XA DataSource class
- Closed
- relates to
-
WFLY-18703 Misleading error message for XA DataSource class
- Closed