我有一个运行的嵌入式H2数据库,我一直在这样连接: Browser H2 interface
这完全符合要求。我使用JPA / EJB / JSF构建将在Liberty Profile上运行的EAR。我已经将Liberty Profile配置为过去使用过几个不同的数据库,但我对H2没有运气。我的server.xml看起来像这样:
<!-- Enable features -->
<featureManager>
<feature>ejbLite-3.1</feature>
<feature>servlet-3.0</feature>
<feature>localConnector-1.0</feature>
<feature>managedBeans-1.0</feature>
<feature>cdi-1.0</feature>
<feature>jpa-2.0</feature>
<feature>jaxrs-1.1</feature>
<feature>jsf-2.0</feature>
<feature>jaxws-2.2</feature>
</featureManager>
<httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
<library description="XXXX" id="XXXX" name="XXXX">
<fileset dir="${shared.resource.dir}/XXXX" includes="*.jar"/>
</library>
<dataSource type="javax.sql.DataSource" id="XXXX" jndiName="jdbc/XXXX">
<jdbcDriver javax.sql.DataSource="org.h2.jdbcx.JdbcDataSource">
<library>
<fileset caseSensitive="false" dir="${shared.resource.dir}/XXXX"/>
</library>
</jdbcDriver>
<properties password="gg" URL="jdbc:h2:~/XXXX" user="SA" databaseName="XXXXDB"/>
</dataSource>
<applicationMonitor updateTrigger="mbean"/>
此方法永远不会找到数据库。我也尝试过使用192.168.2.13:8087
,但这会给出
org.apache.openjpa.persistence.PersistenceException: No suitable driver found for http://192.168.2.13:8087 DSRA0010E: SQL State = 08001, Error Code = 8,001
at org.apache.openjpa.jdbc.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:102)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:603).
我花了相当多的时间在google上搜索正确的配置,但一直没有成功。任何指导将不胜感激。
提前致谢。
答案 0 :(得分:4)
这是我在wlp:
的server.xml中运行的h2配置<dataSource
id="mydb"
jndiName="jdbc/mydb"
type="javax.sql.ConnectionPoolDataSource">
<jdbcDriver
javax.sql.ConnectionPoolDataSource="org.h2.jdbcx.JdbcDataSource"
javax.sql.DataSource="org.h2.jdbcx.JdbcDataSource"
javax.sql.XADataSource="org.h2.jdbcx.JdbcDataSource"
libraryRef="SharedLibrary_H2"/>
<properties
URL="jdbc:h2:C:/Apps/db/h2/mydb.db;MV_STORE=FALSE;AUTO_SERVER=TRUE"
databaseName="MY_DB"
user="sa"
password="sa" />
</dataSource>
<library id="SharedLibrary_H2">
<fileset dir="${shared.resource.dir}/h2" id="Fileset_H2"/>
</library>
h2.jar必须位于:
C:\path\to\wlp\usr\shared\resources\h2\h2-1.4.187.jar
在peristence.xml的持久性单元中:
<jta-data-source>jdbc/mydb</jta-data-source>
答案 1 :(得分:0)
您收到的错误似乎表明OpenJPA无法确定要使用的DBDictionary。首次启动数据库连接时,OpenJPA会尝试根据连接的元数据确定要使用的正确字典。在这种情况下,无法建立与数据库的连接(您应该能够使用给定的数据库URL信息进行验证),或者OpenJPA无法根据元数据确定数据库类型。我的猜测是你遇到的后一种情况。
您可以通过在persistence.xml文件中指定字典来绕过此自动字典检测。尝试指定此属性并查看结果。
<property name="openjpa.jdbc.DBDictionary" value="h2"/>
更多详细信息可在此处找到: http://ci.apache.org/projects/openjpa/trunk/docbook/manual.html#ref_guide_dbsetup_dbsupport