Java JBOSS驱动程序名为;org.mariadb.jdbc.Driver“;未安装

Java JBOSS驱动程序名为;org.mariadb.jdbc.Driver“;未安装,java,jboss,mariadb,ejbca,Java,Jboss,Mariadb,Ejbca,在JBOSS7中安装MariaDB Java连接器 我很难使用MariaDB在JBOSS7上部署EJBCA 6。我已经将EJBCA配置为使用JBOSS standalone。我的配置在使用默认H2数据库后端时工作。我已经在JBOSS standalone.xml中配置了mariadb Java连接器 <datasources> <datasource jndi-name="java:jboss/datasources/ExampleDS"

在JBOSS7中安装MariaDB Java连接器

我很难使用MariaDB在JBOSS7上部署EJBCA 6。我已经将EJBCA配置为使用JBOSS standalone。我的配置在使用默认H2数据库后端时工作。我已经在JBOSS standalone.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>
<datasource jta="true" jndi-name="java:jboss/MariaDBDS" pool-name="MariaDBDS" enabled="true" use-ccm="false">
                <connection-url>jdbc:mariadb://localhost:3306/DbName</connection-url>
                <driver>mariadb-java-client-2.7.0.jar</driver>
                <driver-class>org.mariadb.jdbc.Driver</driver-class>
                
                <security>
                    <user-name>uname</user-name>
                    <password>pwd</password>
                </security>
                <validation>
                    <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                    <validate-on-match>true</validate-on-match>
                    <background-validation>false</background-validation>
                    <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                </validation>
            </datasource>
我已将EJBCA database.properties设置为:

    <?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>
    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.

我做错了什么?

我看到了一些奇怪的事情:

<datasource jndi-name="java:/MariaDS" pool-name="MariaDS" enabled="false">

enabled=false不应存在,也不应为true,如:

<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

另外,通常有datasource元素和drivers元素

  • 将module.xml和mariadb-java-client.jar复制到jboss modules base dir…\org\mariadb\main\
  • 请参阅下面的module.xml示例。用您的jar文件名更新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>
    
    
    
  • 有关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>
    
    
    jdbc:mariadb://10.92.142.148:6603/DB1
    马里亚布
    选择1
    您的数据库用户名
    暗语
    选择1
    
  • 稍后返回此部分并更新您的连接池

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

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


  • 对我来说,在搜罗了很多东西并收集了一些零碎的东西之后,下面的工作就完成了

    首先需要通过jboss cli部署Mariadb jar文件,然后将模块添加到org/Mariadb/main下/

    <?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="org.mariadb">  <resources>   <resource-root path="mariadb-java-client-2.7.0.jar"/></resources>  <dependencies>   <module name="javax.api"/>   <module name="javax.transaction.api"/>   </dependencies> </module>
    
    
    
    然后在standalone.xml中添加更改

            <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>
    
    <datasource jta="true" jndi-name="java:jboss/MariaDBDS" pool-name="MariaDBDS" enabled="true" use-ccm="false">
                    <connection-url>jdbc:mariadb://localhost:3306/DbName</connection-url>
                    <driver>mariadb-java-client-2.7.0.jar</driver>
                    <driver-class>org.mariadb.jdbc.Driver</driver-class>
                    
                    <security>
                        <user-name>uname</user-name>
                        <password>pwd</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                        <validate-on-match>true</validate-on-match>
                        <background-validation>false</background-validation>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                    </validation>
                </datasource>
    
    
    jdbc:mariadb://localhost:3306/DbName
    mariadb-java-client-2.7.0.jar
    org.mariadb.jdbc.Driver
    uname
    pwd
    符合事实的
    错误的
    
    尝试从UI添加,而不是查看配置文件。这会更容易,也不容易出错。谢谢。但是使用ui不是我的选择,因为我正在通过Ansible部署EJBCA。无论如何,我想我找到了解决问题的办法。似乎再次运行ant deploy解决了这个错误。但是我还在调试这个。如果你在用JBOSS和MariaDB安装EJBCA时遇到麻烦,你可以看看我的角色:非常感谢你,Henrick的github链接。你让我的生活更轻松