java - 未安装名为 "org.mariadb.jdbc.Driver"的 JBOSS 驱动程序

标签 java jboss mariadb ejbca

在 JBOSS7 中安装 MariaDB Java 连接器

我在使用 MariaDB 在 JBOSS7 上部署 EJBCA 6 时遇到问题。我已将 EJBCA 配置为独立使用 JBOSS。我的配置在使用默认 H2 数据库后端时有效。我已经在 J​​BOSSstandalone.xml 中配置了 mariadb Java 连接器

        <datasources>
            <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
                <driver>h2</driver>
                <security>
                    <user-name>sa</user-name>
                    <password>sa</password>
                </security>
            </datasource>
            <drivers>
                <driver name="h2" module="com.h2database.h2">
                    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
                <driver name="mariadb" module="org.mariadb.jdbc">
                    <xa-datasource-class>org.mariadb.jdbc.MySQLDataSource</xa-datasource-class>
                </driver>
            </drivers>

            <datasource jndi-name="java:/MariaDS" pool-name="MariaDS" enabled="false">
                <connection-url>jdbc:mariadb://localhost:3306/ejbca</connection-url>
                <driver>mariadb</driver>
                <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                <pool>
                    <min-pool-size>100</min-pool-size>
                    <max-pool-size>200</max-pool-size>
                </pool>
                <security>
                    <user-name>sa</user-name>
                    <password>sa</password>
                </security>
                <statement>
                    <prepared-statement-cache-size>100</prepared-statement-cache-size>
                    <share-prepared-statements/>
                </statement>
            </datasource>
        </datasources>

我已将 MariaDB Java 连接器复制到 JBOSS_HOME/modules/org/mariadb/jdbc/main/mariadb-java-client-1.1.5.jar 并配置 module.xml,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.0" name="org.mariadb.jdbc">
      <resources>
        <resource-root path="mariadb-java-client-1.1.5.jar"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
      </dependencies>
    </module>

MariaDB 驱动程序列在 boot.log 和 server.log 中。它还通过 jboss-cli 列出:

    [standalone@localhost:9999 /] /subsystem=datasources:installed-drivers-list
    {
        "outcome" => "success",
        "result" => [
            {
                "driver-name" => "mariadb",
                "deployment-name" => undefined,
                "driver-module-name" => "org.mariadb.jdbc",
                "module-slot" => "main",
                "driver-datasource-class-name" => "",
                "driver-xa-datasource-class-name" =>         "org.mariadb.jdbc.MySQLDataSource",
                "driver-class-name" => "org.mariadb.jdbc.Driver",
                "driver-major-version" => 1,
                "driver-minor-version" => 1,
                "jdbc-compliant" => false
            },
            {
                "driver-name" => "h2",
                "deployment-name" => undefined,
                "driver-module-name" => "com.h2database.h2",
                "module-slot" => "main",
                "driver-datasource-class-name" => "",
                "driver-xa-datasource-class-name" => "org.h2.jdbcx.JdbcDataSource",
                "driver-class-name" => "org.h2.Driver",
                "driver-major-version" => 1,
                "driver-minor-version" => 3,
                "jdbc-compliant" => true
            }
        ]
    }

我已经设置了 EJBCA database.properties,如下所示:

    database.driver=org.mariadb.jdbc.Driver
    database.url=jdbc:mysql://hostname:3306/ejbca?characterEncoding=UTF
    database.name=mysql

但是,当我尝试使用 ant deploy 将 EJBCA 部署到 JBOSS 时,部署失败并显示:

    jee:deployDSJBoss7:
         [exec] Result: 1
         [exec] Result: 1
         [echo] data-source add --name=ejbcads --driver-name="org.mariadb.jdbc.Driver" --connection-url="jdbc:mysql://ejbca-test-05.vm:3306/ejbca?characterEncoding=UTF-8" --jndi-name="java:/EjbcaDS"  --use-ccm=true --user-name="ejbca" --password="reverse" --validate-on-match=true --background-validation=false --prepared-statements-cache-size=50 --share-prepared-statements=true --min-pool-size=5 --max-pool-size=150 --pool-prefill=true --transaction-isolation=TRANSACTION_READ_COMMITTED --check-valid-connection-sql="select 1"
         [exec] JBAS010468: Driver named "org.mariadb.jdbc.Driver" is not installed.

我做错了什么?

最佳答案

  1. 将 module.xml 和 mariadb-java-client.jar 复制到 jboss 模块基目录 ...\org\mariadb\main\
  2. 请参阅以下 module.xml 示例。使用您的更新 jar 文件名

    <module xmlns="urn:jboss:module:1.1" name="org.mariadb">
        <resources>
            <resource-root path="mariadb-java-client-1.3.3.jar"/>
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module name="javax.transaction.api"/>
        </dependencies>
    </module>
    
  3. 请参阅下面的standalone.xml 或您使用的xml 中的数据源配置。根据您的需要替换 IP/主机名、端口号、数据库名称 (DB1)、池名称、jndi 名称。

    <datasource jndi-name="java:jboss/MariaDBDS" pool-name="MariaDBDS" enabled="true" statistics-enabled="true">
        <connection-url>jdbc:mariadb://10.92.142.148:6603/DB1</connection-url>
        <driver>mariadb</driver>
        <new-connection-sql>SELECT 1</new-connection-sql>
        <security>
            <user-name>your-database-username</user-name>
            <password>password</password>
        </security>
        <validation>
            <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
            <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
            <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
        </validation>
    </datasource>
    

稍后再回到这部分并更新您的连接池

  • 在驱动程序中添加以下内容

    <driver name="mariadb" module="org.mariadb">
        <xa-datasource-class>org.mariadb.jdbc.MariaDbDataSource</xa-datasource-class>
    </driver>
    
  • 启动jboss并在控制台中检查数据源并测试连接

  • 关于java - 未安装名为 "org.mariadb.jdbc.Driver"的 JBOSS 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31453300/

    相关文章:

    java - ruby 中是否有类似 Java Quartz 的东西?

    java - 使用Slf4j和logback时如何抑制jboss日志记录?

    java - 与应用程序隔离的 WildFly9 JASPI 模块

    mysql - 将 Access SQL 内部联接查询转换为 mySQL 查询时出现问题

    mysql - SQL - Where...In 子句中的选择联合

    java - 设置搜索小部件后退按钮功能

    java - Java 中的动态绑定(bind)遇到问题

    java - 设置与方法参数同名的实例变量?

    jboss - 部署到 JBoss 的 Spring Boot Web 应用程序 - webjars-locator 似乎不起作用

    mysql - 使用 LIMIT 关键字检索项目总数