我需要使用EJB创建java web应用程序的教育演示。
我想使用maven embedded-glassfish插件来简化运行此演示的人的事情(这样他们就不需要手动设置和配置glassfish服务器)。
但是,我无法理解如何强制embedded-glassfish使用其他数据库而不是临时apache derby。我使用Java Persistence API - 我希望用户使用永久数据库,例如H2,由我的应用程序启动(它可以正常启动)。
我尝试过直接的想法 - 通过persistence.xml配置我需要的东西
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="demoData" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://127.0.0.1:12345/demodb"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
它不会被完全忽略,它被加载 - 但我的JPA无论如何都使用默认数据库。我能做什么?我可以以某种方式重新配置jdbc / __ default数据源,还是让我的持久性文件工作?提前谢谢!
答案 0 :(得分:0)
在JavaEE容器上下文中,直接在持久性单元中配置JDBC连接是不常见的。相反,JDBC连接被单独配置为数据源,它通过javax.persistence.jtaDataSource属性在持久性单元中引用(这使容器有机会管理连接池等)。
因为没有设置jtaDataSource,容器会“回退”到“jdbc / __ default”下的默认数据源。
我的建议是你配置自己的数据源,可以在persistence.xml中引用。