Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как использовать несколько серверов бд? 
:(
    Опции темы
zhz
Дата 21.2.2013, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.10.2006
Где: Petropavlovsk-Kam chatsky

Репутация: нет
Всего: 2



В бинах через @persistentcontext инъектирую entitymanager. Вызываю namedquery из энтитей. Суть в том что данные до определенной даты хранятся на одном сервере бд, после на другом. Таким образом запрос сначала надо выполнить на одном сервере а потом на другом. Пробовал делать так:
Код

@peristencecontext("unit one")
Entitymanager em1

@peristencecontext("unit two")
Entitymanager em2
.................

Typedquery query = em1.createnamedquery(entity.QUERY);
Typedquery query2= em2.createnamedquery(entity.QUERY);
finallist = query.getresultlist();
finallist.addall(query2.getresultlist());

Return finallist;

 

Но данный подход вызывает исключение. Как правильно решить данный вопрос?
PM MAIL ICQ   Вверх
korian
Дата 21.2.2013, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 1
Всего: 17



Примерно так:
Код

@TransactionAttribute(TransactionAttributeType.NEVER)
public void doThis() {
   result1 = doThisForUnitOne();
   result2 = doThisForUnitTwo();
...
}

public Result doThisForUnitOne() {
...
return result;
}

public Result doThisForUnitTwo() {
...
return result;
}

PM   Вверх
zhz
Дата 26.2.2013, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.10.2006
Где: Petropavlovsk-Kam chatsky

Репутация: нет
Всего: 2



Спасибо большое за ответ. Решил проблему. Инъектировал два EntityManager в бин 
Код

    @PersistenceContext(unitName = "uni1")
    EntityManager em;

    @PersistenceContext(unitName = "unit2")
    EntityManager em2;
 
Далее работал с нимим как обычно. чтобы не выскакивало исключение, необходимо использовать в connection pool в качестве resource type  javax.sql.XADatasource вместо javax.sql.Datasource
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1021 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.