Как использовать базу данных H2 с JPA на WebSphere Liberty

1
задан Andy Guibert 13 July 2018 в 19:36
поделиться

1 ответ

Основная проблема, которую я вижу, это определение <datasource> в server.xml, вы использовали элемент <properties.db2.jcc>, который соответствует драйверу JDBC IBM JCC JCC. Поскольку у Liberty нет специальной <properties.h2> конфигурации, вы должны использовать общий конфигурационный элемент <properties>, а также определять имена классов DataSource на вашем элементе <jdbcDriver>.

Конфигурация должна выглядеть примерно так:

<dataSource id="h2test" jndiName="jdbc/h2test">
    <!-- Define the DataSource class names on the <jdbcDriver> element -->
    <jdbcDriver 
        javax.sql.XADataSource="org.h2.jdbcx.JdbcDataSource"
        javax.sql.ConnectionPoolDataSource="org.h2.jdbcx.JdbcDataSource"
        javax.sql.DataSource="org.h2.jdbcx.JdbcDataSource" 
        libraryRef="H2JDBCLib"/>
    <!-- set the connection URL on the <properties> element.
         this corresponds to the setURL() method on H2's JdbcDataSource class.
         you may also list any properties here that have a corresponding setXXX method on H2's JdbcDataSource class -->
    <properties URL="jdbc:h2:mem:testdb"/>
</dataSource>

Кроме того, было бы лучше, если бы вы поставили свой драйвер H2 JDBC где-то под ${server.config.dir} или ${shared.resource.dir}, так как ${wlp.install.dir}/lib, где барабаны времени исполнения Liberty. Вы не хотите смешивать свои банки приложений с ними!

<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


. В качестве промежуточного этапа отладки вы можете проверить, чтобы DataSource был разрешен из вашего приложения следующим образом:

@Resource(lookup = "jdbc/h2test")
DataSource ds;

// ...
ds.getConnection().close();

Once вы получаете эту часть работы, переходите к инъекции вашего EntityManager. Кроме того, не забудьте проверить ${server.config.dir}/logs/messages.log на более подробные сообщения об ошибках, если все идет не так.

1
ответ дан Andy Guibert 17 August 2018 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: