2012-12-15 31 views
0

我需要使用EJB創建java web應用程序的教育演示。使用maven配置外部數據庫embedded-glassfish

我想使用maven embedded-glassfish插件來簡化運行此演示的人員(以便他們不需要手動設置和配置glassfish服務器)。

但是,我不明白如何強制嵌入glassfish使用其他數據庫,而不是臨時的Apache Apache Derby。我使用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> 

它不是完全被忽略,它被加載 - 但我的JPA工作與默認的數據庫反正。我能做什麼?我可以以某種方式重新配置jdbc/__默認數據源,或者使我的持久性文件有效嗎?提前致謝!

回答

0

在JavaEE容器環境中,直接在持久性單元中配置JDBC連接是不常見的。相反,JDBC連接是作爲數據源單獨配置的,它通過javax.persistence.jtaDataSource屬性在持久單元中引用(這給容器管理連接池等的機會)。

由於未設置jtaDataSource,因此容器「退回」到「jdbc/__ default」下的默認數據源。

我的建議是,你可以配置你自己的數據源,它可以在persistence.xml中被引用。