簡體   English   中英

使用 postgresql 連接到 Wildfly 上的數據庫時出現問題

[英]Troubles in connecting to database on Wildfly using postgresql

我在使用 postgresql 連接到 Wildfly 上的數據庫時遇到問題,我在 Red Hat Core Studio 中編寫。
我的 standalone.xml 是:

<datasources>
         <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
         <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
              <driver>h2</driver>
              <security>
                   <user-name>sa</user-name>
                   <password>sa</password>
              </security>
          </datasource>
          <datasource jndi-name="java:jboss/datasources/tvTutorial" pool-name="tvTutorial" enabled="true" statistics-enabled="true">
               <connection-url>jdbc:postgresql//localhost:5432/tvTutorial</connection-url>
               <driver-class>org.postgresql.Driver</driver-class>
               <connection-property name="url">
                   jdbc:postgresql//localhost:5432/tvTutorial
               </connection-property>
               <driver>NewPestsList-1.0.war</driver>
               <security>
                   <user-name>user</user-name>
                   <password>password</password>
               </security>
           <validation>
               <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
                   <background-validation>true</background-validation>
                   <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
            </validation>
            </datasource>
            <drivers>
                <driver name="h2" module="com.h2database.h2">
                    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>
...
    </deployment>
    </deployments>
</server>

我的 persistence.xml 是:

<!DOCTYPE xml>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="NewPestsList">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name='javax.persistence.jdbc.driver'
                value='org.postgresql.Driver' />
            <property name='javax.persistence.jdbc.url'
                value='jdbc:postgresql//localhost:5432/tvTutorial' />
            <property name='javax.persistence.jdbc.user'
                value='user' />
            <property name='javax.persistence.jdbc.password'
                value='password' />
            <property name='hibernate.dialect'
                value='org.hibernate.dialect.PostgreSQLDialect' />
            <property name='hibernate.connection.shutdown' value='true' />
            <property name='hibernate.show_sql' value='false' />
            <property name='hibernate.format_sql' value='false' />
            <property name="hibernate.case.use_query_cache"
                value="false" />
        </properties>
    </persistence-unit>
</persistence>

當我go在wildfly HAL管理

console/configuration/subsystems/datasources&drivers/JDBC Drivers/

我看到兩個 JDBC 驅動程序:

"NewPestsList-1.0.war""NewPestsList-1.0.war_org.postgresql.Driver_42_2"如圖兩個war文件我的日志是:

16:10:55,949 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0010: Unbound data source [java:jboss/datasources/tvTutorial]
16:10:55,949 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) WFLYJCA0019: Stopped Driver service with driver-name = NewPestsList-1.0.war_org.postgresql.Driver_42_2
16:10:55,950 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 76) WFLYUT0022: Unregistered web context: '/NewPestsList-1.0' from server 'default-server'
16:10:55,951 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-6) WFLYJCA0019: Stopped Driver service with driver-name = NewPestsList-1.0.war
16:10:55,995 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 92) WFLYJPA0011: Stopping Persistence Unit (phase 2 of 2) Service 'NewPestsList-1.0.war#NewPestsList'
16:10:55,998 INFO  [org.hibernate.orm.beans] (ServerService Thread Pool -- 92) HHH10005004: Stopping BeanContainer : org.hibernate.resource.beans.container.internal.CdiBeanContainerExtendedAccessImpl@1145c435
16:10:55,999 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 92) WFLYJPA0011: Stopping Persistence Unit (phase 1 of 2) Service 'NewPestsList-1.0.war#NewPestsList'
16:10:56,054 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-7) WFLYSRV0028: Stopped deployment NewPestsList-1.0.war (runtime-name: NewPestsList-1.0.war) in 105ms
16:10:56,054 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) WFLYCTL0013: Operation ("composite") failed - address: ([]) - failure description: "WFLYCTL0441: Operation has resulted in failed or missing services 
WFLYCTL0184:    New missing/unsatisfied dependencies:
      service jboss.jdbc-driver.NewPestsList-1_0_war (missing) dependents: [service jboss.driver-demander.java:jboss/datasources/tvTutorial, service org.wildfly.data-source.tvTutorial] 
WFLYCTL0448: 2 additional services are down due to their dependencies being missing or failed"
16:10:56,085 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0009: Undeployed "NewPestsList-1.0.war" (runtime-name: "NewPestsList-1.0.war")
16:10:56,085 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0183: Service status report
WFLYCTL0184:    New missing/unsatisfied dependencies:
      service jboss.jdbc-driver.NewPestsList-1_0_war (missing) dependents: [service jboss.driver-demander.java:jboss/datasources/tvTutorial, service org.wildfly.data-source.tvTutorial] 
WFLYCTL0448: 2 additional services are down due to their dependencies being missing or failed
16:11:01,096 INFO  [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) WFLYDS0004: Found NewPestsList-1.0.war in deployment directory. To trigger deployment create a file called NewPestsList-1.0.war.dodeploy
16:11:01,102 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "NewPestsList-1.0.war" (runtime-name: "NewPestsList-1.0.war")
16:11:02,321 INFO  [org.jboss.as.jpa] (MSC service thread 1-3) WFLYJPA0002: Read persistence.xml for NewPestsList
16:11:02,415 INFO  [org.jboss.weld.deployer] (MSC service thread 1-1) WFLYWELD0003: Processing weld deployment NewPestsList-1.0.war
16:11:02,430 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 92) WFLYJPA0010: Starting Persistence Unit (phase 1 of 2) Service 'NewPestsList-1.0.war#NewPestsList'
16:11:02,431 INFO  [org.hibernate.jpa.internal.util.LogHelper] (ServerService Thread Pool -- 92) HHH000204: Processing PersistenceUnitInfo [
    name: NewPestsList
    ...]
16:11:02,720 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-8) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 42.2)
16:11:02,721 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-8) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 42.2)
16:11:02,721 WARN  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-8) WFLYJCA0003: Unable to instantiate driver class "org.postgresql.Driver": org.jboss.msc.service.DuplicateServiceException: Service jboss.jdbc-driver.NewPestsList-1_0_war_org_postgresql_Driver_42_2 is already registered
16:11:02,737 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-5) WFLYJCA0018: Started Driver service with driver-name = NewPestsList-1.0.war
16:11:02,737 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-7) WFLYJCA0018: Started Driver service with driver-name = NewPestsList-1.0.war_org.postgresql.Driver_42_2
16:11:02,739 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) WFLYJCA0001: Bound data source [java:jboss/datasources/tvTutorial]
16:11:02,747 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 92) WFLYJPA0010: Starting Persistence Unit (phase 2 of 2) Service 'NewPestsList-1.0.war#NewPestsList'
16:11:02,748 INFO  [org.hibernate.dialect.Dialect] (ServerService Thread Pool -- 92) HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
16:11:02,755 INFO  [org.hibernate.type.BasicTypeRegistry] (ServerService Thread Pool -- 92) HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@74330d99
16:11:02,757 INFO  [org.hibernate.envers.boot.internal.EnversServiceImpl] (ServerService Thread Pool -- 92) Envers integration enabled? : true
16:11:02,970 WARN  [org.jboss.weld.Bootstrap] (MSC service thread 1-2) WELD-000146: BeforeBeanDiscovery.addAnnotatedType(AnnotatedType<?>) used for class com.sun.faces.flow.FlowDiscoveryCDIHelper is deprecated from CDI 1.1!
16:11:02,970 INFO  [io.smallrye.metrics] (MSC service thread 1-2) MicroProfile: Metrics activated
16:11:03,146 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (ServerService Thread Pool -- 92) Initializing Mojarra 2.3.9.SP02 for context '/NewPestsList-1.0'
16:11:04,491 INFO  [org.primefaces.webapp.PostConstructApplicationEventListener] (ServerService Thread Pool -- 92) Running on PrimeFaces 7.0
16:11:04,502 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 92) WFLYUT0021: Registered web context: '/NewPestsList-1.0' for server 'default-server'
16:11:04,546 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0010: Deployed "NewPestsList-1.0.war" (runtime-name : "NewPestsList-1.0.war")
16:11:04,546 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0183: Service status report
WFLYCTL0185:    Newly corrected services:
      service jboss.data-source.reference-factory.tvTutorial (new available)
      service jboss.jdbc-driver.NewPestsList-1_0_war (new available)
      service org.wildfly.data-source.tvTutorial (new available)

我覺得這與此有關,但由於我是編程新手,我不確定是否應該添加更多數據,請告訴我。

編輯:我在 stdunbar 和 Will T 的幫助下更新了我的程序。仍然需要學習如何重新安裝 Wildfly。 現在我收到這些警告和錯誤:

WARN  [org.jboss.as.domain.management.security] (MSC service thread 1-1) WFLYDM0111: Keystore C:\Users\david\wildfly-17.0.0.Final\standalone\configuration\application.keystore not found, it will be auto generated on first use with a self signed certificate for host localhost
WARN  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-5) WFLYJCA0003: Unable to instantiate driver class "org.postgresql.Driver": org.jboss.msc.service.DuplicateServiceException: Service jboss.jdbc-driver.NewPestsList-1_0_war_org_postgresql_Driver_42_2 is already registered
ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "NewPestsList-1.0.war")]) - failure description: {
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jdbc.tvTutorial"],
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [
        "jboss.persistenceunit.\"NewPestsList-1.0.war#tvTutorialPU\".__FIRST_PHASE__ is missing [jboss.naming.context.java.jdbc.tvTutorial]",
        "jboss.persistenceunit.\"NewPestsList-1.0.war#tvTutorialPU\" is missing [jboss.naming.context.java.jdbc.tvTutorial]"

編輯#2:

我在<jta-data-source>jdbc/tvTutorial</jta-data-source>中寫了正確的地址后就可以了 謝謝你們

潛水員必須作為模塊添加,你不能引用你的戰爭部署

本指南適用於 mysql,但過程相同,只是使用正確的名稱

https://medium.com/@hasnat.saeed/install-and-configure-mysql-jdbc-driver-on-jboss-wildfly-e751a3be60d3

您正在創建數據源JDBC 連接。 你真的只想要數據源。 因此,與其采取手動步驟修改 standalone.xml 並安裝模塊,我推薦一種更標准、更不容易出錯的方法。 您可以通過提供 JDBC 驅動程序的副本來編寫整個過程的腳本。

創建一個包含如下代碼的腳本:

embed-server --server-config=standalone.xml --std-out=echo

batch

# add the module
module add --name=org.postgres --resources=/path/to/postgresql-42.2.8.jar --dependencies=javax.api,javax.transaction.api

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

# add the datasource
/subsystem=datasources/data-source=tvTutorial/:add(connection-url=jdbc:postgresql://localhost:5432/tvTutorial,driver-name=postgres,jndi-name=java:/jdbc/tvTutorial,user-name=user,password=password)

run-batch

然后運行它:

$WILDFLY_HOME/bin/jboss-cli.sh --file=the_file_name.cli

(請注意,$WILDFLY_HOME 可能未設置。它只是您安裝 Wildfly 的目錄)

假設您的服務當前未運行。 如果它正在運行,則刪除前兩行和最后一行。

您的persistence.xml文件現在非常簡單,因為配置全部在standalone.xml中通過數據源:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
             version="2.2">
    <persistence-unit name="tvTutorialPU" transaction-type="JTA">
        <jta-data-source>jdbc/tvTutorial</jta-data-source>
    </persistence-unit>
</persistence>

這給你的是一個可重復的過程。 您現在不必手動修改standalone.xml文件,如果您升級我在 Wildfly 8.x 到 18.x 上使用了相同的腳本。

我會從全新安裝的 Wildfly 開始,因為您不知道所有的東西都被損壞了。

暫無
暫無

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

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