Как добавить источник данных PostgreSQL в WildFly 9.0?

Я пробовал учебник в 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

этот учебник работает с 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 ответов


я столкнулся с той же ошибкой и поведением WildFly 9. Я полный новичок в WF, но после некоторых исследований я обнаружил, что проблема заключается в именовании модуля. Если я получаю это хорошо, фактические имена пакетов в модуле используются для разрешения пути к модулю.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)

Я запускаю 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

где модуль.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>

тогда источник данных может быть:

<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. В вашем случае может быть localhost.

как я закончил с ошибкой, упомянутой вами: 1. имя файла написано неправильно 2. / modules / org ...и т. д. имеется опечатка 3. модуль.xml с ошибками в качестве модулей.XML 4. ...


его очень просто, но может занять больше времени, если вы будете новыми с JBOSS EAP / WilFly Используйте следующие шаги для создания источника данных:

  1. перейдите в папку bin сервера, где присутствует файл jboss-cli(Power script):right click on jboss-cli(power script file)--> Run with power shell (консоль откроется).

  2. добавить драйвер PostgreSQL JDBC в качестве основного модуля.

модуль добавить --name=com.в PostgreSQL -- resources= / path/to / postgresql-9.3-1102.jdbc4.jar --dependencies=javax.api, javax.торговая операция.в API

  1. зарегистрируйте драйвер PostgreSQL JDBC.

/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql, driver-xa-datasource-class-name=org.в PostgreSQL.xa.PGXADataSource)

  1. добавить PostgreSQL источник.

источник данных добавить --name=PostgresDS --jndi-name=java:jboss / PostgresDS -- драйвер-имя=postgresql-соединение-url=jdbc: postgresql: / / localhost: 5432/postgresdb-имя пользователя=admin-пароль=admin-validate-on-match=true-background-validation=false-valid-connection-checker-class-name=org.с JBoss.в JCA.адаптеры.интерфейс jdbc.увеличение.и Postgres.PostgreSQLValidConnectionChecker -- исключение-сортировщик-класс-имя=org.с JBoss.в JCA.адаптеры.интерфейс jdbc.увеличение.и Postgres.PostgreSQLExceptionSorter

будьте осторожны с path путь/к это путь, где ваш downloded Postgresql-jdbc.Джар присутствует.


поместите драйвер 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.

Я не знаю, почему, но добавление источников данных с помощью веб-консоли не работает. По 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 есть ошибки.

С уважением, Павел М


вы не упоминаете свою версию java/jdbc. Я только что испытал ту же проблему, и это было связано с несоответствием драйвера против Java 1.8. С обновлением wildfly 9 вы также обновили Java?

в ".jdbc41."версия драйвера построена для 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

просто примечание: Я проверил команды CLI, как взято из учебник упомянуто, против WildFly 10, и он работает правильно при создании драйвера JDBC и источника данных. Кроме того, я вижу, что журнал ошибок содержит неправильное название модуля ("org.portgres"):

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

отказ от ответственности: я владелец mastertheboss.com