Java 配置Liberty配置文件以使用H2数据库

Java 配置Liberty配置文件以使用H2数据库,java,jpa,h2,websphere-liberty,Java,Jpa,H2,Websphere Liberty,我有一个嵌入式H2数据库正在运行,我一直连接到该数据库: <applicationMonitor updateTrigger="mbean"/> 这完全符合预期。我正在使用JPA/EJB/JSF构建一个将在Liberty概要文件上运行的EAR。在过去,我已经将Liberty配置文件配置为与多个不同的数据库一起使用,但在H2方面我运气不佳。My server.xml如下所示: <applicationMonitor updateTrigger="mbean"/> 我

我有一个嵌入式H2数据库正在运行,我一直连接到该数据库:

<applicationMonitor updateTrigger="mbean"/>
这完全符合预期。我正在使用JPA/EJB/JSF构建一个将在Liberty概要文件上运行的EAR。在过去,我已经将Liberty配置文件配置为与多个不同的数据库一起使用,但在H2方面我运气不佳。My server.xml如下所示:

<applicationMonitor updateTrigger="mbean"/>
我花了相当多的时间在谷歌上搜索正确的配置,但都没有成功。任何指导都将不胜感激

<applicationMonitor updateTrigger="mbean"/>

提前谢谢

您收到的错误似乎表明OpenJPA无法确定使用哪个DBDictionary。当第一次启动数据库连接时,OpenJPA尝试根据连接的元数据确定要使用的正确字典。在这种情况下,要么无法建立到数据库的连接(您应该能够使用数据库的给定url信息对此进行验证),要么OpenJPA无法根据元数据确定数据库类型。我猜你遇到的是后一种情况

<applicationMonitor updateTrigger="mbean"/>
通过在persistence.xml文件中指定字典,可以绕过自动字典检测。尝试指定此属性并查看结果

<applicationMonitor updateTrigger="mbean"/>
<property name="openjpa.jdbc.DBDictionary" value="h2"/>

更多详细信息可在此处找到:

您收到的错误似乎表明OpenJPA无法确定要使用哪个DBDictionary。当第一次启动数据库连接时,OpenJPA尝试根据连接的元数据确定要使用的正确字典。在这种情况下,要么无法建立到数据库的连接(您应该能够使用数据库的给定url信息对此进行验证),要么OpenJPA无法根据元数据确定数据库类型。我猜你遇到的是后一种情况

<applicationMonitor updateTrigger="mbean"/>
通过在persistence.xml文件中指定字典,可以绕过自动字典检测。尝试指定此属性并查看结果

<applicationMonitor updateTrigger="mbean"/>
<property name="openjpa.jdbc.DBDictionary" value="h2"/>

更多详细信息可在此处找到:

这是我在wlp的server.xml中的工作h2配置:

<applicationMonitor updateTrigger="mbean"/>
<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>
在peristence.xml的持久化单元中:

<applicationMonitor updateTrigger="mbean"/>
<jta-data-source>jdbc/mydb</jta-data-source>
jdbc/mydb

这是我在wlp的server.xml中的工作h2配置:

<applicationMonitor updateTrigger="mbean"/>
<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>
在peristence.xml的持久化单元中:

<applicationMonitor updateTrigger="mbean"/>
<jta-data-source>jdbc/mydb</jta-data-source>
jdbc/mydb

如果您发布OpenJPA所需的persistence.xml,出于某种原因,您的数据库URL可能是
http://192.168.2.13:8087
。它应该类似于
jdbc:h2:~/XXXX
这是我的持久性。。。我的源代码尝试使用jdbc:h2:~/XXXX,但从未找到它。192.168.2.13:8087只是我在尝试的东西。这是我在使用jdbc:h2:~/XXXX:[code]时遇到的错误,原因是:org.apache.openjpa.lib.jdbc.ReportingSQLException:未找到表“COMPANY”;SQL语句:在org.apache.openjpa.lib.jdbc.LoggingConnectionCorator.wrap(LoggingConnectionCorator.java:219)上从公司t0[42102-178]中选择计数(t0.ID){从公司t0中选择计数(t0.ID)}[code=42102,state=42S02]在org.apache.openjpa.lib.jdbc.loggingConnectionCorator.access$000(loggingConnectionCorator.java:59)上,如果您发布openjpa需要的persistence.xml……出于某种原因,您的数据库URL是
http://192.168.2.13:8087
。它应该类似于
jdbc:h2:~/XXXX
这是我的持久性。。。我的源代码尝试使用jdbc:h2:~/XXXX,但从未找到它。192.168.2.13:8087只是我在尝试的东西。这是我在使用jdbc:h2:~/XXXX:[code]时遇到的错误,原因是:org.apache.openjpa.lib.jdbc.ReportingSQLException:未找到表“COMPANY”;SQL语句:在org.apache.openjpa.lib.jdbc.LoggingConnectionCorator.wrap(LoggingConnectionCorator.java:219)上从公司t0[42102-178]中选择计数(t0.ID){从公司t0中选择计数(t0.ID)}[code=42102,state=42S02]登录org.apache.openjpa.lib.jdbc.loggingConnectionCorator.access$000(loggingConnectionCorator.java:59)