【问题标题】:WildFly 18.0.1 JDBC Drivers : Internal error (newValue is null)WildFly 18.0.1 JDBC 驱动程序:内部错误(newValue 为空)
【发布时间】:2020-03-23 08:42:16
【问题描述】:

我在 WildFly (18.0.1) 中配置 JDBC 驱动程序时遇到问题。

每当我打开(配置/子系统/数据源和驱动程序/JDBC 驱动程序)

我明白了:

内部错误(详情:newValue 为空)。

错误图片 1:

错误图片 2:

任何帮助将不胜感激!

【问题讨论】:

  • 服务器日志中是否有任何内容(通常在 Wildfly 安装下的standalone/log/server.log 中)?
  • 日志文件中没有任何内容表明存在问题。在日志文件中出现错误后也没有任何变化。
  • 我有同样的问题,不知道为什么。我安装了版本 18.0.1_Final 和 16.0.0_Final,但同样的问题。您已经找到解决方案了吗?

标签: java jakarta-ee jdbc wildfly


【解决方案1】:

我遇到了同样的问题,但我所做的解决方案是创建一个控制台用户,其密码使用字母数字和 1 个非字母数字字符。

  1. 运行服务器 wildfly phat\bin\standalone.bat
  2. wildfly phat\bin\add-user.bat
  3. 如果管理控制台按 a 键
  4. 用户名:admin 或输入您想要的用户名
  5. 按 fo 更新管理员用户
  6. 密码:例如 p@ssword1 或包含 1 个非字母数字字符的密码
  7. repassword:与您使用的密码相同
  8. 输入
  9. 不输入

最后使用不同的网络浏览器,如 chrome

Config user with password without 1 non-aphanumeric character

Config user with password with 1 non-aphanumeric character

【讨论】:

  • 这样的密码格式如何解决这个问题?
【解决方案2】:

这不是wildfly/jboss 问题。该错误位于 Hal 管理控制台(版本 3.2.1)中。我修复了这个错误,将 HAL 控制台版本更改为 3.2.4。

  1. 下载版本:
wget https://repository.jboss.org/nexus/content/repositories/ea/org/jboss/hal/hal-console/3.2.4.Final/hal-console-3.2.4.Final-resources.jar
  1. 将jar文件复制到wildfly目录
sudo cp hal-console-3.2.4.Final-resources.jar /opt/wildfly/modules/system/layers/base/org/jboss/as/console/main/
  1. 编辑文件module.xml
sudo vim /opt/wildfly/modules/system/layers/base/org/jboss/as/console/main/module.xml
  1. 在文件 module.xml 中更改版本
   <resources>
        <resource-root path="hal-console-3.2.4.Final-resources.jar"/>
    </resources>
  1. 重启 jboss/wildfly
sudo systemctl restart wildfly or sudo service wildfly restart

【讨论】:

  • github 存档似乎不包含目标文件夹,只有源代码。所以我们要么构建那个 maven 项目,要么从其他地方提取一个控制台 jar,例如WildFly 19 测试版。
  • 步骤 1a。 - 安装 maven、cd app、mvn 包(然后等待,然后复制 jar)
  • 我忘了包含编译 src 的步骤。我会在我的答案中添加这个
  • 另外一个小事:重启服务器还不行,需要强制刷新浏览器缓存^_^'
【解决方案3】:

使用此链接,how_to_setup_postgresql_datasource_with_wildfly。这将以其他方式解决您的问题。

配置文件版本(单向)

Standalone.xml 是服务器的配置文件。管理控制台只是一个用于编辑此文件的友好 UI。

部署 JDBC 驱动

  • 打开文件资源管理器并转到 Wildfly 中的 /modules/ 目录 安装目录。
  • 创建文件夹 /org/postgresql/main/。这些 文件夹需要与JDBC驱动的层次包相匹配。
  • 将 JDBC 驱动程序复制到您创建的“主”目录中。在这 目录,用这个创建一个“module.xml”文件

        <resources>
            <resource-root path="postgresql-42.2.1.jar"/>
            <!-- Make sure this matches the name of the JAR you are installing -->
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module name="javax.transaction.api"/>
        </dependencies>
    </module>
    

创建数据源 - 转到 Wildfly 安装目录中的 /standalone/configuration 目录。 - 打开standalone.xml(这是独立服务器使用的默认配置文件) - 搜索“数据源”以转到正确的部分。 - 在元素中,您需要同时添加 PostgreSQL 和

需要重新启动 Wildfly,您可以通过在管理控制台中测试连接来验证您的更改。

<drivers>
    <driver name="postgresql" module="org.postgresql">
        <!-- for xa datasource -->
        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
        <!-- for non-xa datasource -->
        <driver-class>org.postgresql.Driver</driver-class>
    </driver>
</drivers>
<datasources>
    <datasource jndi-name="java:jboss/datasources/StemoDS" pool-name="StemoDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:postgresql://localhost:5432/StemoDS</connection-url>
        <driver>postgresql</driver>
        <security>
            <user-name>postgres</user-name>
            <password>admin</password>
        </security>
    </datasource>
</datasources>

使用 Wildfly CLI 的另一种方式(2 方式)

添加数据源的另一种方法是使用控制台行界面 (CLI)。同样,该过程分为两个步骤。

部署 JDBC 驱动程序 - 转到 Wildfly 安装目录中的 /bin 目录。 - 在这个目录上打开一个终端并运行

  ./jboss-cli.sh --connect controller=127.0.0.1 (or jboss-cli.bat if you are on Windows)
  • 要安装模块,请运行此命令

    模块添加--name=org.postgresql --resources=/tmp/postgresql-42.2.1.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)

  • 然后,添加数据源的最后一条命令

    数据源添加--jndi-name=java:jboss/datasources/StenusysDemoDS --name=StenusysDemoDS --connection-url=jdbc:postgresql://localhost:5432/StenusysDemo --driver-name=postgres --user-name=postgres --password=admin

您可以通过在管理控制台中测试连接来验证您的更改。

【讨论】:

    【解决方案4】:

    这显然是一个已知问题(参见https://developer.jboss.org/thread/280649https://issues.redhat.com/browse/WFLY-12642),将在下一个版本中修复。

    【讨论】:

      【解决方案5】:

      我可以完全重现您的问题。我已经有一段时间没有使用 Wildfly 控制台了,但这对我来说似乎是一个错误。但是,还有另一种方法具有易于重复和编写脚本的优点。

      如果您从 Wildfly bin 目录运行 jboss-cli,您可以使用脚本添加 JDBC 驱动程序和 JEE 数据源。我的脚本如下所示:

      embed-server --server-config=standalone.xml --std-out=echo
      
      batch
      
      module add --name=org.postgres --resources=${user.home}/Downloads/postgresql-42.2.8.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/data-source=myDS/:add(connection-url=jdbc:postgresql://localhost:5432/dbname,driver-name=postgres,jndi-name=java:/jdbc/myDS,background-validation=true,background-validation-millis=60000,blocking-timeout-wait-millis=2000,flush-strategy=Gracefully,idle-timeout-minutes=5,initial-pool-size=4,max-pool-size=64,min-pool-size=4,password=the-password,query-timeout=10,track-statements=true,tracking=true,user-name=the-user,validate-on-match=false)
      
      run-batch
      

      该脚本应该在服务器不运行的情况下运行。如果您想在服务器运行时运行它,请删除 embed-serverbatchrun-batch 行。基本上这首先创建一个模块,在这种情况下是一个 PostgreSQL 驱动程序。然后它添加了一个 JDBC 驱动程序,最后添加了一个 DataSource。它可以运行:

      jboss-cli.sh --file=the-file-name.cli
      

      假设您将上述内容保存到名为the-file-name.cli 的文件中。同样,Wildfly 的 bin 目录需要在您的路径上才能在命令行上运行。

      【讨论】:

        猜你喜欢
        • 2013-08-27
        • 2014-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-30
        • 2012-09-16
        • 2013-03-26
        • 2017-11-29
        相关资源
        最近更新 更多