【问题标题】:configure external database with maven embedded-glassfish使用 maven Embedded-glassfish 配置外部数据库
【发布时间】:2012-12-15 09:25:24
【问题描述】:

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

【问题讨论】:

    标签: java jpa glassfish ejb


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 2011-10-16
      • 1970-01-01
      相关资源
      最近更新 更多