我看到的主要问题是
<datasource>
在server.xml中,您使用了
<properties.db2.jcc>
元素,它对应于ibm db2 jcc jdbc驱动程序。因为自由没有一个
<properties.h2>
配置,必须使用泛型
<properties>
配置元素,以及在
<jdbcDriver>
元素
配置应该如下所示:
<dataSource id="h2test" jndiName="jdbc/h2test">
<jdbcDriver
javax.sql.XADataSource="org.h2.jdbcx.JdbcDataSource"
javax.sql.ConnectionPoolDataSource="org.h2.jdbcx.JdbcDataSource"
javax.sql.DataSource="org.h2.jdbcx.JdbcDataSource"
libraryRef="H2JDBCLib"/>
<properties URL="jdbc:h2:mem:testdb"/>
</dataSource>
另外,最好将h2 jdbc驱动程序放在
${server.config.dir}
或
${shared.resource.dir}
,自
${wlp.install.dir}/lib
是自由运行时的罐子。你不想把你的应用程序jar和那些混在一起!
<library id="H2JDBCLib">
<fileset dir="${server.config.dir}" includes="h2-1.4.197.jar"/>
</library>
最后,确保persistence.xml文件位于war应用程序中的正确位置。应该在
WEB-INF/classes/META-INF/persistence.xml
作为中间调试步骤,您可以检查以确保可以从应用程序中解析数据源,如下所示:
@Resource(lookup = "jdbc/h2test")
DataSource ds;
ds.getConnection().close();
一旦你开始工作,开始注射
EntityManager
是的。另外,一定要检查
${server.config.dir}/logs/messages.log
如果出了问题,会有更详细的错误信息。