jboss 无法将postgres与keycloak一起使用

oiopk7p5  于 2022-11-23  发布在  其他
关注(0)|答案(5)|浏览(178)

我正在尝试使用postgres与keycloak。以下文档

$ ls keycloak-9.0.0/modules/system/layers/keycloak/org/postgresql/main
  config.xml  postgresql-42.2.10.jar

这是config.xml文件。config.xml

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">

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

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

这些是我在standalone.xmlstandalone.xml中所做的更改

<datasources>

    <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
      <connection-url>jdbc:postgresql://localhost:5432/test</connection-url>
      <driver>postgresql</driver>
      <pool>
           <max-pool-size>20</max-pool-size>
      </pool>
      <security>
           <user-name>postgres</user-name>
           <password>StrongPassword</password>
      </security>
   </datasource>

    <drivers>
         <driver name="postgresql" module="org.postgresql">
              <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
          </driver>
     </drivers>

</datasources>

<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/KeycloakDS">

我遇到的错误。error

06:13:39,430 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 32) WFLYCTL0013: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("jdbc-driver" => "postgresql")
]) - failure description: "WFLYJCA0115: Module for driver [org.postgresql] or one of it dependencies is missing: [org.postgresql]"

我该如何解决这个问题?

inn6fuwd

inn6fuwd1#

我可以建议另一种配置方法吗?我使用下面的方法来配置PostgreSQL和Keycloak,它运行得很好。关键是对一个停止的Keycloak运行这个方法(使用全新安装)。将下面的代码保存为类似setup-keycloak.cli的文件:

embed-server --server-config=standalone.xml --std-out=echo

batch
#
# remove the default provided datasource
#
/subsystem=datasources/data-source=KeycloakDS/:remove

#
# add them
#
module add --name=org.postgres --resources=/path/to/postgresql-42.2.10.jar --dependencies=javax.api,javax.transaction.api
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)

/subsystem=datasources/data-source=KeycloakDS/:add(connection-url=jdbc:postgresql://localhost:5432/keycloak_database,driver-name=postgres,jndi-name=java:jboss/datasources/KeycloakDS,initial-pool-size=4,max-pool-size=64,min-pool-size=4,password=keycloak_user,user-name=keycloak_pass)

run-batch

然后使用$KEYCLOAK_HOME/bin/jboss.sh --file=setup-keycloak.cli运行此命令。此命令将删除KeycloakDS数据源,添加PostgreSQL模块,并使用您的参数重新创建KeycloakDS数据源。只要您有PostgreSQL JDBC驱动程序的本地副本,就可以随时使用此命令来重新生成配置。

pn9klfpd

pn9klfpd2#

我认为您的问题是您将设置命名为config.xml,而应该是module.xml
其次,您必须将postgresql jar下载到该位置:curl -O https://jdbc.postgresql.org/download/postgresql-X.X.X.jar > /opt/keycloak/modules/system/layers/keycloak/org/postgresql/main只需将X.X.X替换为您的版本。
然后重新启动服务器。
附言:你应该用保险库来存放你密码。

5jdjgkvh

5jdjgkvh3#

这对我有用。
1.在基本目录内创建PostgreSQL模块.xml**(不是config.xml)**(密钥掩码-11.0.2/模块/系统/层/基本/com/postgresql/)
1.更新标准. xml

<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"
            statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
    <connection-url>jdbc:postgresql://localhost:5432/keycloak</connection-url>
    <driver>postgresql</driver>
    <security>
        <user-name>db-user</user-name>
        <password>db-pass</password>
    </security>
</datasource>
<drivers>
<driver name="postgresql" module="com.postgresql.h2">
    <driver-class>org.postgresql.Driver</driver-class>
    <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
ctrmrzij

ctrmrzij4#

这对我的单机版很有效:
1.在文件module.xml中

<module xmlns="urn:jboss:module:1.3" name="org.postgresql">

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

  <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
  </dependencies>
</module>

2.在文件standalone.xml中

<datasources>
          
    <datasource jndi-name="java:jboss/datasources/KeycloakDS"
                     pool-name="KeycloakDS"
                     enabled="true"
                     use-java-context="true"
                     statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}" >
        
        <connection-url>jdbc:postgresql://192.168.1.XX:5432/Your-DataBase</connection-url>
             <driver>postgresql</driver>
        
             <pool>
                   <max-pool-size>20</max-pool-size>
             </pool>
             <security>
                   <user-name>UserName</user-name>
                   <password>**********</password>
             </security>
        <statement>
                 <prepared-statement-cache-size>32</prepared-statement-cache-size>
                  <share-prepared-statements>true</share-prepared-statements>
        </statement>
        </datasource>
        
        <drivers>
                 <driver name="postgresql" module="org.postgresql">
                  <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                 </driver>
        </drivers>
</datasources>

3.in 标准. xml

<default-bindings
        context-service="java:jboss/ee/concurrency/context/default"
        datasource="java:jboss/datasources/KeycloakDS"
        managed-executor-service="java:jboss/ee/concurrency/executor/default"
        managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default"
        managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
hrysbysz

hrysbysz5#

对于那些从Dockerized jboss/keycloak示例的教程中了解到这一点的人来说,您已经拥有了内置的rdbms支持,而无需任何配置:https://hub.docker.com/r/jboss/keycloak/

docker run -p 8080:8080 -e KEYCLOAK_USER=kuser -e KEYCLOAK_PASSWORD=kpass -e DB_VENDOR=postgres -e DB_ADDR=host:port -e DB_DATABASE=postgres -e DB_USER=pguser -e DB_PASSWORD=pgpass jboss/keycloak:15.0.2

相关问题