如何外化JBOSS 7.1.1的persistence.xml属性?

时间:2014-04-30 09:28:25

标签: jboss7.x datasource persistence.xml

我的persistence.xml目前存在于应用程序war中(在META-INF文件夹中)。但是,要使应用程序跨多个DB运行,需要反复更改持久性。我想避免它。但是,我无法理解如何在persistence.xml中配置属性(如方言),比如说,我将根据我的数据库更改属性文件,因此不会迫使我更新和重新部署我的战争。

如果我可以在standalone.xml中的数据源中配置方言,我已经提到了其他数据库详细信息,我的问题也可以解决。我无法弄清楚房产会是什么。 虽然我更喜欢第一个解决方案。

PS:我是Web App开发的新手。问题可能会惹恼你。 :d

1 个答案:

答案 0 :(得分:2)

我使用的方法适用于休眠。

1)将hibernate配置属性放在xml文件中(称之为hibernate.cfg.xml但不是强制性的)

这是一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.hbm2ddl.auto">create-drop</property>
        <property name="hibernate.show_sql">false</property>
        <property name="hibernate.search.default.directory_provider">ram</property>
    </session-factory>
</hibernate-configuration>

你只能放置那些不以hibernate.ejb

开头的hibernate属性

2)创建一个jboss模块。这很简单。假设您要调用模块com.myorganization.config,而不是在服务器安装的modules文件夹中创建目录结构:/ com / myorganization / config / main。在主文件夹中放入hibernate.cfg.xml文件和以下module.xml文件:

<?xml version="1.0" encoding="UTF-8"?>  
<module xmlns="urn:jboss:module:1.1" name="com.myorganization.config">  
    <resources>  
        <resource-root path="."/>  
    </resources>
</module>

3)在persistence.xml中添加以下属性:

<property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml" />

4)最后,在META-INF / MANIFEST.MF文件中添加以下行:

Dependencies: com.myorganization.config

如果你喜欢maven使用maven-war-plugin来改变MANIFEST.MF:

<configuration>
    <archive>
        <manifestEntries>
            <Dependencies>com.myorganization.config</Dependencies>
        </manifestEntries>
    </archive>
</configuration>

就是这样。

相关问题