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

时间:2015-07-04 16:29:54

标签: java postgresql jdbc datasource wildfly

我已经在mastertheboss.com尝试了教程:

  1. ./jboss-cli.sh
  2. module add --name=org.postgres --resources=/tmp/postgresql-9.3-1101.jdbc41.jar --dependencies=javax.api,javax.transaction.api
  3. /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
  4. data-source add --jndi-name=java:/PostGreDS --name=PostgrePool --connection-url=jdbc:postgresql://localhost/postgres --driver-name=postgres --user-name=postgres --password=postgres
  5. 本教程适用于WildFly 8.2,但它不适用于WildFly 9.0。第3步失败,出现错误消息:

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

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

6 个答案:

答案 0 :(得分:7)

我遇到了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)

答案 1 :(得分:7)

我在码头工作中运行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>

独立包含驱动程序:

<driver name="postgresql" module="org.postgres">
    <xa-datasource-class>org.postgresql.Driver</xa-datasource-class>
</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>
        ...

请注意,我的ndis-db是一个postgres docker。在你的情况下可以是localhost。

我如何最终得到您提到的错误: 1.文件名拼写错误 2. / modules / org ...等包含拼写错误 3. module.xml拼写错误为modules.xml 4. ...

答案 2 :(得分:2)

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

  1. 转到服务器的bin文件夹,其中存在jboss-cli(电源脚本)文件:right click on jboss-cli(power script file)--> Run with power shell(控制台将打开)。

  2. 将PostgreSQL JDBC驱动程序添加为核心模块

  3.   

    模块add --name = com.postgresql   --resources = / path / to / postgresql-9.3-1102.jdbc4.jar --dependencies = javax.api,javax.transaction.api

    1. 注册PostgreSQL JDBC驱动程序。
    2.   

      /子系统=数据源/ JDBC驱动器的PostgreSQL =:添加(驱动程序名称= PostgreSQL中,驱动器模块名= com.postgresql,驾驶员XA-数据源类名= org.postgresql.xa.PGXADataSource)

      1. 添加PostgreSQL数据源。
      2.   

        data-source add --name = PostgresDS --jndi-name = java:jboss / PostgresDS   --driver-name = postgresql --connection-url = jdbc:postgresql:// localhost:5432 / postgresdb --user-name = admin --password = admin --validate-on-match = true --background-validation = false - valid-connection-checker-class-name = org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker   --exception分拣机类名= org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter

        小心路径路径/ 这是您下载 Postgresql-jdbc.jar 的路径。

答案 3 :(得分:1)

将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控制台执行此操作。 您无法通过将JDBC jar文件(使用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中是错误。

此致 Pawel M

答案 4 :(得分:0)

您没有提及您的java / jdbc版本。我刚刚遇到了同样的问题,这是由于驱动程序与Java 1.8不匹配造成的。使用wildfly 9升级你是否也升级了Java?

&#34; .jdbc41。&#34;驱动程序版本是为Java 1.7构建的。 Postgres有一个矩阵,显示兼容的Java / JDBC和Postgres驱动程序版本的组合。也许你需要:postgresql-9.4.1209.jar(适用于1.8 / jdbc42)

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

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

答案 5 :(得分:0)

请注意:我已经针对WildFly 10测试了从tutorial提取的CLI命令,它在创建JDBC驱动程序和数据源时正常工作。 除此之外,我可以看到报告的错误日志包含模块名称的错误拼写(“org.portgres”):

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

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