JBoss中多个War应用程序的多个休眠配置

时间:2011-11-15 21:41:37

标签: java hibernate war jboss6.x

我正在运行JBoss AS 6。

  • 我已经部署了多个War应用程序。所有这些应用程序都通过休眠配置访问数据库。

  • 我已经在JBoss中配置了数据源,每个War应用程序都有一个DS,因为它们使用不同的数据库用户帐户。然后在每个应用程序中,我配置hibernate.cfg.xml并说明要使用的相应DS。每场战争都有自己的hibernate.cfg.xml

  • 隔离后,每个应用都可以正常运行。我启动服务器,测试应用程序,关闭服务器。一切都好。

  • 当我启动服务器并开始使用所有应用程序时出现了问题。 第一个与数据库建立连接的应用似乎工作正常,但以下可能会显示与以下相关的一些问题:

    1. 不存在的hibernate实体映射。
    2. 不存在的数据库表。

我的理论:

  1. 未加载相应的hibernate.cfg.xml且未加载映射的位置。执行查询时,hibernate不了解此类实体。

  2. 未加载相应的hibernate.cfg.xml,并且正在使用其他用户帐户连接到数据库。某些表仅对某些用户可见。

  3. 我的问题是:

    为什么应用程序没有正确加载相应的 hibernate.cfg.xml

1 个答案:

答案 0 :(得分:0)

我不知道为什么使用cfg.xml文件不起作用,但我现在看到的大多数JBoss / Hibernate应用程序都使用JPA。如果你没有得到答案,也许试试看?这很简单,只需将一个persistence.xml添加到META-INF文件夹中,该文件夹类似于:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd"
             version="1.0">

    <persistence-unit name="MyService" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <non-jta-data-source>java:/jdbc/myDB</non-jta-data-source>
        <class>com.mydomain.service.entities.Entity</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>

</persistence>

您可以通过多种方式解决持久性问题,但这样做有效:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyService");

不建议你不能使用配置文件,只提供替代...