Java 如何将PostgreSQL数据源添加到WildFly 9.0?

Java 如何将PostgreSQL数据源添加到WildFly 9.0?,java,postgresql,jdbc,datasource,wildfly,Java,Postgresql,Jdbc,Datasource,Wildfly,我在以下位置尝试过教程: /jboss cli.sh module add--name=org.postgres--resources=/tmp/postgresql-9.3-1101.jdbc41.jar--dependencies=javax.api,javax.transaction.api /subsystem=datasources/jdbc driver=postgres:add(driver name=“postgres”,driver module name=“org.postg

我在以下位置尝试过教程:

  • /jboss cli.sh
  • module add--name=org.postgres--resources=/tmp/postgresql-9.3-1101.jdbc41.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)
  • 数据源添加--jndi name=java:/PostGreDS--name=PostgrePool--connection url=jdbc:postgresql://localhost/postgres --驱动程序名称=postgres--用户名=postgres--密码=postgres
  • 本教程适用于WildFly 8.2,但不适用于WildFly 9.0。第三步失败,并显示错误消息:

    {
    "outcome" => "failed",
    "failure-description" => "WFLYJCA0041: Failed to load module for driver [org.portgres]",
    "rolled-back" => true
    }
    

    如何将Postgres数据源添加到WildFly 9.0?

    将Postgres JDBC驱动程序放入部署文件夹(只需部署)。 现在使用CLI控制台并输入以下命令:

    data-source add --name=PostgresqlDS --jndi-name=java:jboss/datasources/PostgresqlDS --driver-name=postgresql-9.4-1201.jdbc41.jar --connection-url=jdbc:postgresql://localhost:5432/test --user-name=USER --password=PASSWORD
    
    检查您的驱动程序是否为jdbc4

    我不知道为什么,但是通过web控制台添加数据源不起作用。通过CLI工作

    扩展JDBC驱动程序的正确解决方案是将驱动程序作为模块添加到服务器。 在WildFly 9中,您可以使用cli控制台执行此操作您无法通过将JDBCJAR文件(使用xml)复制到“模块”文件夹(如WildFly 8中)来实现这一点

    执行命令:

    module add --name=org.postgres --resources=postgresql-9.4-1201.jdbc41.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:installed-drivers-list
    
    使用驱动程序创建数据源将很容易

    请使用9.0最终版本。在CR中是bug

    问候,,
    Pawel M

    我遇到了与WildFly 9相同的错误和行为。我是WF的新手,但经过一些研究,我发现问题在于模块命名。 如果我理解得很好,模块中的实际包名将用于解析module.xml的路径
    我将这些步骤改为下面的步骤,效果很好:

    module add--name=org.postgresql--slot=main--resources=/usr/local/lib/postgresql-9.4-1201.jdbc4.jar--dependencies=javax.api,javax.transaction.api

    /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgresql",driver-class-name=org.postgresql.Driver)
    

    我正在docker中运行wildfly 10:

    #ADD DATASOURCES
    RUN mkdir -p $JBOSS_HOME/modules/org/postgres/main
    COPY files/postgresql-9.4.1208.jre7.jar $JBOSS_HOME/modules/org/postgres/main/
    COPY files/module.xml $JBOSS_HOME/modules/org/postgres/main/
    COPY files/standalone.xml $JBOSS_HOME/standalone/configuration
    
    module.xml在哪里

    <module xmlns="urn:jboss:module:1.1" name="org.postgres">
        <resources>
            <resource-root path="postgresql-9.4.1208.jre7.jar"/>
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module name="javax.transaction.api"/>
            <module name="javax.servlet.api" optional="true"/>
        </dependencies>
    </module>
    
    
    
    和standalone包含驱动程序:

    <driver name="postgresql" module="org.postgres">
        <xa-datasource-class>org.postgresql.Driver</xa-datasource-class>
    </driver>
    
    
    org.postgresql.Driver
    
    那么数据源可以是:

    <datasource jndi-name="java:jboss/datasources/PostgresDS" pool-name="PostgresDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:postgresql://ndis-db:5432/postgres</connection-url>
            <driver>postgresql</driver>
            ...
    
    
    jdbc:postgresql://ndis-db:5432/postgres
    postgresql
    ...
    
    请注意,我的ndis db是postgres docker。在您的情况下,可以是localhost

    我是如何以你提到的错误结束的: 1.文件名拼写错误 2. /模块/组织…等包含输入错误 3.module.xml拼错为modules.xml
    4. ...

    这很简单,但如果你是新的JBOSS EAP/WilFly,可能需要更多时间 使用以下步骤创建数据源:

  • 转到存在jboss cli(电源脚本)文件的服务器的bin文件夹:
    右键单击jboss cli(电源脚本文件)-->Run with Power shell
    (控制台将打开)

  • 添加PostgreSQL JDBC驱动程序作为核心模块

  • 模块添加--name=com.postgresql --resources=/path/to/postgresql-9.3-1102.jdbc4.jar——依赖项=javax.api,javax.transaction.api

  • 注册PostgreSQL JDBC驱动程序。
  • /subsystem=datasources/jdbc driver=postgresql:add(驱动程序名=postgresql,驱动程序模块名=com.postgresql,驱动程序xa数据源类名=org.postgresql.xa.PGXADataSource)

  • 添加PostgreSQL数据源。
  • 数据源add--name=PostgresDS--jndi name=java:jboss/PostgresDS --驱动程序名称=postgresql--连接url=jdbc:postgresql://localhost:5432/postgresdb --用户名=admin--password=admin--validate on match=true--background validation=false--valid connection checker类名=org.jboss.jca.adapters.jdbc.extensions.postgres.postgresqlvidconnectionchecker --异常分类器类名=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter


    小心使用pathpath/to这是您下载的Postgresql jdbc.jar所在的路径。

    您没有提到您的java/jdbc版本。我刚刚经历了同样的问题,这是由于驱动程序与Java1.8不匹配造成的。随着wildfly 9的升级,您是否也升级了Java

    “.jdbc41.”驱动程序版本是为Java1.7构建的。Postgres有一个矩阵,显示了兼容的Java/JDBC和Postgres驱动程序版本的组合。也许您需要:postgresql-9.4.1209.jar(适用于1.8/jdbc42)

    然后在CLI中(假设域模式和配置文件=完整)


    请注意:我已经针对WildFly 10测试了上述CLI命令,它可以正确地创建JDBC驱动程序和数据源。 除此之外,我还可以看到报告的错误日志中包含模块名称(“org.portgres”)的错误:


    免责声明:我是mastertheboss.com的所有者

    这对我不起作用。我仍然得到了czerny得到的WFLYJCA0041错误。另外,除了模块的名称(从org.postgres改为org.postgresql)之外,您还更改了什么吗?它现在适合我了。我的JBOSS_HOME环境变量不是最新的。
    module add --name=org.postgresql.Driver --resources=/tmp/postgresql-9.4.1209.jar
    connect
    /profile=full/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgresql.Driver",driver-class-name=org.postgresql.Driver)
    exit
    
    {
    "outcome" => "failed",
    "failure-description" => "WFLYJCA0041: Failed to load module for driver [org.portgres]",
    "rolled-back" => true
    }