使用maven embedded-glassfish配置外部数据库

时间:2012-12-15 09:25:24

标签: java jpa glassfish ejb

我需要使用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数据源,还是让我的持久性文件工作?提前谢谢!

1 个答案:

答案 0 :(得分:0)

在JavaEE容器上下文中,直接在持久性单元中配置JDBC连接是不常见的。相反,JDBC连接被单独配置为数据源,它通过javax.persistence.jtaDataSource属性在持久性单元中引用(这使容器有机会管理连接池等)。

因为没有设置jtaDataSource,容器会“回退”到“jdbc / __ default”下的默认数据源。

我的建议是你配置自己的数据源,可以在persistence.xml中引用。