注册驱动程序:java.lang.ClassNotFoundException:org.h2.jdbcx.JdbcDataSource

问题描述 投票:0回答:2

我需要在类路径中使用H2。我正在使用这些值:

# driver=org.h2.jdbcx.JdbcDataSource # it doesn't work
driver=org.h2.Driver                 # it doesnt work too...
url=jdbc:h2:tcp://localhost/~/mydb;AUTO_SERVER=TRUE
login=sa
password=

我已经在我的standalone.xml中声明了数据源:

<datasource jndi-name="java:jboss/datasources/mydb" pool-name="mydb" enabled="true" use-java-context="true">
      <connection-url>jdbc:h2:tcp://localhost/~/mydb</connection-url>
      <driver>h2</driver>
      <security>
            <user-name>sa</user-name>
      </security>
<datasource>
<drivers>
      <driver name="h2" module="com.h2database.h2">
          <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
      </driver>
</drivers>

我在JBoss A7中有H2的默认module.xml

但是在使用以下命令注册JDBC时:Class.forName(driver);

我得到这个例外:

java.lang.ClassNotFoundException: org.h2.jdbcx.JdbcDataSource

另一个值相同:

java.lang.ClassNotFoundException: org.h2.Driver

你能帮我解决一下吗?

非常感谢!

java jboss driver h2
2个回答
0
投票

如果您的(Web)应用程序在应用程序服务器上下文中运行,则通常无需注册驱动程序。您只需使用数据源。应用程序服务器为您注册驱动程序,这就是为什么驱动程序的类不一定对您的应用程序可见。

对于JBoss 7,H2驱动程序作为模块提供。因此,如果您确实需要注册它,则可以通过添加jboss-deployment-structure.xml文件来声明模块依赖项(在.ear或.war部署中)。

引用(关于模块依赖性):


0
投票

我有相同的问题,并在maven中添加此依赖项时修复

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.199</version>
    <scope>runtime</scope>
</dependency>

source

© www.soinside.com 2019 - 2024. All rights reserved.