Erro ao tentar criar um Datasource (PostgreSQL + Wildfly 23)

Bom dia pessoal.

Estou já a alguns dias, tentando criar um datasource no Wildfly para se conectar ao meu banco PostgreSQL. Já assistí diversos vídeos e consultei inúmeros foruns, mas mesmo seguindo a risca a forma como era realizado as consfigurações, eu sempre caia no mesmo problema, independente do driver JDBC ou versão do Wildfly.

Tenho criado a pasta com\postgresql\main com o jar do conector (versão: 42.3.3) e com o module.xml criado:

<?xml version="1.0" encoding="UTF-8"?>

<module name="com.postgresql" xmlns="urn:jboss:module:1.9">

    <resources>
        <resource-root path="postgresql-42.3.3.jar"/>
    </resources>

    <dependencies>
        <module name="java.compiler"/>
        <module name="java.desktop"/>
        <module name="java.instrument"/>
        <module name="java.logging"/>
        <module name="java.management"/>
        <module name="java.naming"/>
        <module name="java.scripting"/>
        <module name="java.sql"/>
        <!--WFLY-14219 Remove deprecated <module name="javax.api"/> -->
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
        <module name="org.slf4j"/>
    </dependencies>
</module>

Entro no console do Wildfly e crio o JDBC Driver com sucesso:
image

Na etapa de criação do Datasource, preencho os dados conforme necessário:



Mas ao testar a conexão, sempre me deparo com o seguinte erro:

e no console do Eclipse tem o seguinte erro:

09:39:08,954 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0001: Bound data source [java:/jdbc/PostgresDS]
09:39:09,107 WARN  [org.jboss.modules.define] (External Management Request Threads -- 1) Failed to define class org.postgresql.shaded.com.ongres.scram.common.exception.ScramException in Module "com.postgresql" version 42.3.3 from local module loader @25748410 (finder: local module finder @2b43529a (roots: C:\DEV\wildfly-23.0.2.Final\modules,C:\DEV\wildfly-23.0.2.Final\modules\system\layers\base)): java.lang.NoClassDefFoundError: Failed to link org/postgresql/shaded/com/ongres/scram/common/exception/ScramException (Module "com.postgresql" version 42.3.3 from local module loader @25748410 (finder: local module finder @2b43529a (roots: C:\DEV\wildfly-23.0.2.Final\modules,C:\DEV\wildfly-23.0.2.Final\modules\system\layers\base))): javax/security/sasl/SaslException
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
	at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:423)
	at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
	at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
	at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
	at org.jboss.modules.Module.loadModuleClass(Module.java:753)
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
	at com.postgresql@42.3.3//org.postgresql.core.v3.ConnectionFactoryImpl.lambda$doAuthentication$4(ConnectionFactoryImpl.java:801)
	at com.postgresql@42.3.3//org.postgresql.core.v3.AuthenticationPluginManager.withPassword(AuthenticationPluginManager.java:81)
	at com.postgresql@42.3.3//org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:788)
	at com.postgresql@42.3.3//org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:180)
	at com.postgresql@42.3.3//org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:235)
	at com.postgresql@42.3.3//org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
	at com.postgresql@42.3.3//org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:223)
	at com.postgresql@42.3.3//org.postgresql.Driver.makeConnection(Driver.java:400)
	at com.postgresql@42.3.3//org.postgresql.Driver.connect(Driver.java:259)
	at org.jboss.ironjacamar.jdbcadapters@1.4.27.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:321)
	at org.jboss.ironjacamar.jdbcadapters@1.4.27.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:352)
	at org.jboss.ironjacamar.jdbcadapters@1.4.27.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:287)
	at org.jboss.ironjacamar.impl@1.4.27.Final//org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.createConnectionEventListener(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1322)
	at org.jboss.ironjacamar.impl@1.4.27.Final//org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:499)
	at org.jboss.ironjacamar.impl@1.4.27.Final//org.jboss.jca.core.connectionmanager.pool.AbstractPool.internalTestConnection(AbstractPool.java:1067)
	at org.jboss.ironjacamar.impl@1.4.27.Final//org.jboss.jca.core.connectionmanager.pool.strategy.OnePool.testConnection(OnePool.java:93)
	at org.jboss.as.connector@23.0.2.Final//org.jboss.as.connector.subsystems.common.pool.PoolOperations$TestConnectionInPool.invokeCommandOn(PoolOperations.java:240)
	at org.jboss.as.connector@23.0.2.Final//org.jboss.as.connector.subsystems.common.pool.PoolOperations$1.execute(PoolOperations.java:97)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:1040)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:779)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:468)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1415)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:431)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.ModelControllerImpl.lambda$execute$1(ModelControllerImpl.java:248)
	at org.wildfly.security.elytron-private@1.15.3.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:304)
	at org.wildfly.security.elytron-private@1.15.3.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:270)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:248)
	at org.jboss.as.domain-http-interface@15.0.1.Final//org.jboss.as.domain.http.server.DomainApiHandler.handleRequest(DomainApiHandler.java:212)
	at io.undertow.core@2.2.5.Final//io.undertow.server.handlers.encoding.EncodingHandler.handleRequest(EncodingHandler.java:72)
	at org.jboss.as.domain-http-interface@15.0.1.Final//org.jboss.as.domain.http.server.DomainApiCheckHandler.handleRequest(DomainApiCheckHandler.java:91)
	at org.jboss.as.domain-http-interface@15.0.1.Final//org.jboss.as.domain.http.server.security.ElytronIdentityHandler.lambda$handleRequest$0(ElytronIdentityHandler.java:62)
	at org.wildfly.security.elytron-private@1.15.3.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:328)
	at org.wildfly.security.elytron-private@1.15.3.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:285)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:254)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:225)
	at org.jboss.as.domain-http-interface@15.0.1.Final//org.jboss.as.domain.http.server.security.ElytronIdentityHandler.handleRequest(ElytronIdentityHandler.java:61)
	at io.undertow.core@2.2.5.Final//io.undertow.server.handlers.BlockingHandler.handleRequest(BlockingHandler.java:56)
	at io.undertow.core@2.2.5.Final//io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
	at io.undertow.core@2.2.5.Final//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:841)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
	at java.base/java.lang.Thread.run(Thread.java:834)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)

09:39:09,108 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (External Management Request Threads -- 1) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: IJ031084: Unable to create connection
	at org.jboss.ironjacamar.jdbcadapters@1.4.27.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:345)
	at org.jboss.ironjacamar.jdbcadapters@1.4.27.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:352)
	at org.jboss.ironjacamar.jdbcadapters@1.4.27.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:287)
	at org.jboss.ironjacamar.impl@1.4.27.Final//org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.createConnectionEventListener(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1322)
	at org.jboss.ironjacamar.impl@1.4.27.Final//org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:499)
	at org.jboss.ironjacamar.impl@1.4.27.Final//org.jboss.jca.core.connectionmanager.pool.AbstractPool.internalTestConnection(AbstractPool.java:1067)
	at org.jboss.ironjacamar.impl@1.4.27.Final//org.jboss.jca.core.connectionmanager.pool.strategy.OnePool.testConnection(OnePool.java:93)
	at org.jboss.as.connector@23.0.2.Final//org.jboss.as.connector.subsystems.common.pool.PoolOperations$TestConnectionInPool.invokeCommandOn(PoolOperations.java:240)
	at org.jboss.as.connector@23.0.2.Final//org.jboss.as.connector.subsystems.common.pool.PoolOperations$1.execute(PoolOperations.java:97)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:1040)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:779)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:468)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1415)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:431)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.ModelControllerImpl.lambda$execute$1(ModelControllerImpl.java:248)
	at org.wildfly.security.elytron-private@1.15.3.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:304)
	at org.wildfly.security.elytron-private@1.15.3.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:270)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:248)
	at org.jboss.as.domain-http-interface@15.0.1.Final//org.jboss.as.domain.http.server.DomainApiHandler.handleRequest(DomainApiHandler.java:212)
	at io.undertow.core@2.2.5.Final//io.undertow.server.handlers.encoding.EncodingHandler.handleRequest(EncodingHandler.java:72)
	at org.jboss.as.domain-http-interface@15.0.1.Final//org.jboss.as.domain.http.server.DomainApiCheckHandler.handleRequest(DomainApiCheckHandler.java:91)
	at org.jboss.as.domain-http-interface@15.0.1.Final//org.jboss.as.domain.http.server.security.ElytronIdentityHandler.lambda$handleRequest$0(ElytronIdentityHandler.java:62)
	at org.wildfly.security.elytron-private@1.15.3.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:328)
	at org.wildfly.security.elytron-private@1.15.3.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:285)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:254)
	at org.jboss.as.controller@15.0.1.Final//org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:225)
	at org.jboss.as.domain-http-interface@15.0.1.Final//org.jboss.as.domain.http.server.security.ElytronIdentityHandler.handleRequest(ElytronIdentityHandler.java:61)
	at io.undertow.core@2.2.5.Final//io.undertow.server.handlers.BlockingHandler.handleRequest(BlockingHandler.java:56)
	at io.undertow.core@2.2.5.Final//io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
	at io.undertow.core@2.2.5.Final//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:841)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
	at java.base/java.lang.Thread.run(Thread.java:834)
	at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)
Caused by: java.lang.NoClassDefFoundError: Failed to link org/postgresql/shaded/com/ongres/scram/common/exception/ScramException (Module "com.postgresql" version 42.3.3 from local module loader @25748410 (finder: local module finder @2b43529a (roots: C:\DEV\wildfly-23.0.2.Final\modules,C:\DEV\wildfly-23.0.2.Final\modules\system\layers\base))): javax/security/sasl/SaslException
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
	at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:423)
	at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
	at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
	at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
	at org.jboss.modules.Module.loadModuleClass(Module.java:753)
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
	at com.postgresql@42.3.3//org.postgresql.core.v3.ConnectionFactoryImpl.lambda$doAuthentication$4(ConnectionFactoryImpl.java:801)
	at com.postgresql@42.3.3//org.postgresql.core.v3.AuthenticationPluginManager.withPassword(AuthenticationPluginManager.java:81)
	at com.postgresql@42.3.3//org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:788)
	at com.postgresql@42.3.3//org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:180)
	at com.postgresql@42.3.3//org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:235)
	at com.postgresql@42.3.3//org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
	at com.postgresql@42.3.3//org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:223)
	at com.postgresql@42.3.3//org.postgresql.Driver.makeConnection(Driver.java:400)
	at com.postgresql@42.3.3//org.postgresql.Driver.connect(Driver.java:259)
	at org.jboss.ironjacamar.jdbcadapters@1.4.27.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:321)
	... 35 more

09:39:09,110 ERROR [org.jboss.as.controller.management-operation] (External Management Request Threads -- 1) WFLYCTL0013: Operation ("test-connection-in-pool") failed - address: ([
    ("subsystem" => "datasources"),
    ("data-source" => "PostgresDS")
]) - failure description: "WFLYJCA0040: failed to invoke operation: WFLYJCA0047: Connection is not valid"

Já procurei pelo erro em vários sites e até tentei criar o datasource via standalone.xml, mas sempre caio nesse : Failed to define class org.postgresql.shaded.com.ongres.scram.common.exception.ScramException.

Alguém teria uma ideia do que poderia estar ocorrendo? Já mudei para o Wildfly 26, usei um conector jdbc do postgres um pouco mais antigo, até já mudei a versão do Java, mas o problema é sempre o mesmo.

De antemão, agradeço a ajuda e atenção de todos.

Bom dia pessoal. Fazendo alguns testes, descobri que pode ser alguma incompatibilidade entre versões. Criei abaixo um planilha com o resultado dos testes para consulta, caso alguém venha a ter problemas semelhantes ao que eu tive.

No mais agradeço a atenção de todos. Abraços.

2 curtidas

Olá, passei por essa mesma situação. Os testes que fiz foram com o Wildfly 31, Java 21 e a versão 16.2 do PostgreSQL, atualmente a latest.
O que resolveu para mim foi realizar esse downgrade da versão do pg para a image: ‘postgres:12.18’. Obrigado por catalogar as versões que não estão com nenhuma incompatibilidade. O driver que utilizei foi o 42.7.2.
Abraços

Parece que o problema pode estar na configuração do seu datasource no Wildfly. Certifique-se de que o caminho para o arquivo JAR do conector PostgreSQL esteja correto na sua configuração do module.xml. Além disso, verifique se você está adicionando o driver JDBC ao datasource de forma correta, garantindo que o nome do driver corresponda ao definido no module.xml. Se possível, compartilhe a configuração do seu datasource para que possamos ajudar a identificar possíveis erros.

Certifique-se de que o caminho para o arquivo JAR do conector PostgreSQL está correto na configuração do módulo. Além disso, verifique se todas as dependências necessárias estão sendo declaradas corretamente no arquivo module.xml, especialmente as relacionadas ao JDBC e ao PostgreSQL. Se mesmo seguindo essas etapas você continuar enfrentando problemas, pode ser útil revisar a documentação oficial do Wildfly e do PostgreSQL ou buscar ajuda em fóruns especializados. Espero que consiga resolver seu problema em breve!