glassfish JDBC资源

时间:2016-03-31 08:20:07

标签: java jpa jdbc glassfish eclipselink

我在Glassfish 4.1上运行了一个使用JDBC资源的应用程序。在应用程序本身中,我有一个persistence.xml文件,列出了所有实体,并告诉容器要使用哪个JDBC资源。我已经定义了一些属性来记录它执行的SQL。它看起来像这样:

<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="MyResource_PU" transaction-type="JTA">
        <jta-data-source>jdbc/my_resource</jta-data-source>
        <class>com.example.entities.EntityOne</class>
        <class>com.example.entities.EntityTwo</class>
        <class>com.example.entities.EntityThree</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.logging.level.sql" value="FINE"/>
            <property name="eclipselink.logging.parameters" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

现在,当这个应用程序投入生产时,我不希望记录SQL。因此,每次发布时,我都需要提醒自己更改eclipselink.logging属性。

我想,应该有更好的方法来解决这个问题。所以我去了Glassfish管理控制台,访问了JDBC Resources并在那里添加了2个属性,但这并不起作用。

有没有办法删除特定环境&#34;值persistence.xml文件和Glassfish配置中的值?我现在用Google搜索了一段时间,但似乎没有找到正确的溶剂。我找到的是Hibernate可以选择指定一个&#34;配置文件&#34;但我还没有找到这个用于EclipseLink。

2 个答案:

答案 0 :(得分:0)

我们在不同文件中使用DEV,QA,PROD,UAT等每个环境的维护属性文件,并在构建期间复制其中一个。

Ant build

<property environment="env" /> 
                <!-- ***** COMMAND LINE ARGUMENTS DEMOED HERE -->
                <property name="build_type" value= "${env.build_type}"/>

<copy todir="deploy">
    <fileset dir="src_dir"/>
    <globmapper from=${env.build_type}".persistence.xml" to="persistence.xml"/>
 </copy>

像这样运行构建

ant -Denv.build_type=PROD

这会将PROD.persistence.xml复制到persistence.xml

ant -Denv.build_type=DEV

这会将DEV.persistence.xml复制到persistence.xml

答案 1 :(得分:0)

根据glassfish documentation,persistence.xml设置优先于全局设置,因此我不建议您稍后要覆盖的persistence.xml文件中的任何内容。

也就是说,EclipseLink服务器集成可以使用服务器日志,允许外部控制设置。有关在应该控制EclipseLink写入的日志文件的glassfish中设置日志记录属性的说明,请参阅this。否则,您可以在peristence.xml文件中定义不同的日志机制,例如log4J或您可以按照here

的方式控制您希望的方式的自定义机制。