Несколько конфигураций гибернации для нескольких приложений War в JBoss - PullRequest
3 голосов
/ 16 ноября 2011

У меня работает JBoss AS 6.

  • Я развернул несколько военных приложений. Все эти приложения получают доступ к БД через конфигурацию гибернации.

  • Я настроил источники данных в JBoss, по одному DS для каждого приложения War, потому что они используют разные учетные записи пользователей БД. Затем в каждом приложении я настраиваю hibernate.cfg.xml и указываю соответствующий DS для использования. У каждой войны есть свои hibernate.cfg.xml.

  • В отдельности каждое приложение работает отлично. Я запускаю сервер, тестирую приложение, выключаю сервер. Все в порядке.

  • Проблемы возникли, когда я запустил сервер и начал использовать все приложения. Первое приложение для подключения к БД, кажется, работает нормально, но следующее может показать некоторые проблемы, связанные с:

    1. Несуществующие отображения объектов гибернации.
    2. Несуществующие таблицы БД.

Мои теории:

  1. Соответствующий hibernate.cfg.xml не был загружен, а местоположения сопоставлений не были загружены. Когда выполняется запрос, hibernate не знает о такой сущности.

  2. Соответствующий hibernate.cfg.xml не был загружен, и для подключения к БД используется другая учетная запись пользователя. Некоторые таблицы видны только некоторым пользователям.

Мой вопрос:

Почему приложения не загружаются правильно hibernate.cfg.xml?

1 Ответ

0 голосов
/ 17 ноября 2011

Я не знаю, почему не работает файл 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");

Не предполагая, что вы не можете заставить это работать с файлом конфигурации, просто предлагая альтернативу ...

...