Проблемы с подключением к базе данных на Wildfly с использованием postgresql - PullRequest
0 голосов
/ 11 февраля 2020

У меня проблемы с подключением к базе данных на Wildfly с использованием postgresql, и я пишу в Red Hat Core Studio.
Мой автономный. 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>

Моя настойчивость. 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 в управлении HAL wildfly

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

Я вижу два драйвера JDB C:

"NewPestsList-1.0.war" и "NewPestsList-1.0.war_org.postgresql.Driver_42_2" как на рисунке два военных файла Мой журнал:

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 и Уилла Т. Мне еще предстоит научиться переустанавливать 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]"```

Edit #2:

It works after I wrote correct adress in
    ```<jta-data-source>jdbc/tvTutorial</jta-data-source>```
Thank you both

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Вы создаете источник данных и соединение JDB C. Вы действительно просто хотите источник данных. Поэтому вместо ручных шагов, которые вы предприняли для изменения автономного режима. xml и установки модуля, я рекомендую гораздо более стандартный подход, который менее подвержен ошибкам. Вы можете создать сценарий для всего процесса, просто имея доступную копию драйвера JDB C.

Создайте сценарий, содержащий код, подобный:

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.

Я бы начал с fre sh установить Wildfly, так как вы не знаете, что все было повреждено.

0 голосов
/ 12 февраля 2020

Дайвер должен быть добавлен как модуль, вы не можете ссылаться на ваше военное развертывание

Это руководство для mysql, но процесс такой же, просто используйте правильные имена

https://medium.com/@hasnat.saeed / установка-и-Настройка- mysql -jdb c -driver-на-JBoss-wildfly-e751a3be60d3

...