簡體   English   中英

如何將PostgreSQL數據源添加到WildFly 9.0?

[英]How to add PostgreSQL datasource to 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?

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

我正在碼頭上運行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. ...

它非常簡單,但如果你是JBOSS EAP / WilFly的新手,可能需要更多時間使用以下步驟來創建數據源:

  1. 轉到服務器的bin文件夾,其中存在jboss-cli(Power腳本)文件: right click on jboss-cli(power script file)--> Run with power shell (控制台將打開)。

  2. 添加PostgreSQL JDBC驅動程序作為核心模塊

module add --name = com.postgresql --resources = / path / to / postgresql-9.3-1102.jdbc4.jar --dependencies = javax.api,javax.transaction.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數據源。

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的路徑。

將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”文件夾來完成此操作

執行命令:

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)

要列出instaled驅動程序,請輸入:

/subsystem=datasources:installed-drivers-list

使用驅動程序創建數據源將很容易。

請使用9.0最終版本。 在CR中是錯誤。

此致,Pawel M.

你沒有提到你的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的所有者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM