我正在运行JBoss AS 6。
我已经部署了多个War应用程序。所有这些应用程序都通过休眠配置访问数据库。
我已经在JBoss中配置了数据源,每个War应用程序都有一个DS,因为它们使用不同的数据库用户帐户。然后在每个应用程序中,我配置hibernate.cfg.xml
并说明要使用的相应DS。每场战争都有自己的hibernate.cfg.xml
。
隔离后,每个应用都可以正常运行。我启动服务器,测试应用程序,关闭服务器。一切都好。
当我启动服务器并开始使用所有应用程序时出现了问题。 第一个与数据库建立连接的应用似乎工作正常,但以下可能会显示与以下相关的一些问题:
我的理论:
未加载相应的hibernate.cfg.xml
且未加载映射的位置。执行查询时,hibernate不了解此类实体。
未加载相应的hibernate.cfg.xml
,并且正在使用其他用户帐户连接到数据库。某些表仅对某些用户可见。
我的问题是:
为什么应用程序没有正确加载相应的 hibernate.cfg.xml
?
答案 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");
不建议你不能使用配置文件,只提供替代...