Как добавить источник данных PostgreSQL в WildFly 9.0?
Я пробовал учебник в mastertheboss.com:
./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)
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 Используйте следующие шаги для создания источника данных:
перейдите в папку bin сервера, где присутствует файл jboss-cli(Power script):
right click on jboss-cli(power script file)--> Run with power shell
(консоль откроется).добавить драйвер PostgreSQL JDBC в качестве основного модуля.
модуль добавить --name=com.в PostgreSQL -- resources= / path/to / postgresql-9.3-1102.jdbc4.jar --dependencies=javax.api, javax.торговая операция.в API
- зарегистрируйте драйвер 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)
- добавить 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