我需要在类路径中使用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
你能帮我解决一下吗?
非常感谢!
如果您的(Web)应用程序在应用程序服务器上下文中运行,则通常无需注册驱动程序。您只需使用数据源。应用程序服务器为您注册驱动程序,这就是为什么驱动程序的类不一定对您的应用程序可见。
对于JBoss 7,H2驱动程序作为模块提供。因此,如果您确实需要注册它,则可以通过添加jboss-deployment-structure.xml文件来声明模块依赖项(在.ear或.war部署中)。
引用(关于模块依赖性):
我有相同的问题,并在maven中添加此依赖项时修复
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
<scope>runtime</scope>
</dependency>