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

Java 使用maven embedded glassfish配置外部数据库,java,jpa,glassfish,ejb,Java,Jpa,Glassfish,Ejb,我需要使用EJB创建JavaWeb应用程序的教育演示 我想使用maven embedded glassfish插件来简化运行此演示的人员的工作(这样他们就不需要手动设置和配置glassfish服务器) 然而,我无法理解如何强制嵌入式glassfish使用其他数据库,而不是临时的ApacheDerby。我使用Java持久性API——我希望用户使用由我的应用程序启动的永久性数据库,例如H2(它可以正常启动) 我尝试了一个简单的想法——通过persistence.xml配置我需要的东西 <?xm

我需要使用EJB创建JavaWeb应用程序的教育演示

我想使用maven embedded glassfish插件来简化运行此演示的人员的工作(这样他们就不需要手动设置和配置glassfish服务器)

然而,我无法理解如何强制嵌入式glassfish使用其他数据库,而不是临时的ApacheDerby。我使用Java持久性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>

org.eclipse.persistence.jpa.PersistenceProvider
假的

它并没有被完全忽略,它被加载了——但我的JPA仍然可以使用默认数据库。我能做什么?我可以以某种方式重新配置jdbc/_默认数据源,还是让我的持久性文件工作?提前谢谢

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

因为没有设置jAdatasource,所以容器“退回”到“jdbc/_default”下的默认数据源

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