Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > hibernate cache between two app


Автор: gelo86 10.1.2010, 13:42
Часто создаются две одделных програм, одна для аднима, другая public. Дапусим в public проге хибернате закешировал некотарые данные. Далее в админе ети данные поменялись. Так как public имеет свои одделный кеш, то ета прога неувидет изменения. Какие решения есть для таких ситуаций ? какоита обший кеш ?

Автор: MaxPayneC 10.1.2010, 14:24
Пожалуй только паттерн session-per-transaction.

Автор: gelo86 10.1.2010, 14:31
Цитата(MaxPayneC @  10.1.2010,  14:24 Найти цитируемый пост)
Пожалуй только паттерн session-per-transaction. 

Пожалусто обясните, как етот паттерн может мне помочь ?

Автор: MaxPayneC 10.1.2010, 16:08
Будет исключена рассинхронизация сессии хибернейт и реального состояния базы.

Автор: gelo86 10.1.2010, 16:25
Но проблема не с сессией, а кешем в разных прогах.

Автор: COVD 11.1.2010, 17:53
Цитата

Далее в админе ети данные поменялись

Данные меняются в едином хранилище (базе). А проблема кешей - синхронизироваться с хранилищем.

Автор: dobrolub 14.1.2010, 01:46
Предлагается два вариант к рассмотрению:

1. посмотри в сторону ear с двумя вебаппами и одним ejb задачей которого и будет общение с базой через хайбернейт.

2. в одном приложении разделение секций админа и юзера возможно с помощью 

<web-app>
  <security-constraint>
      <web-resource-colleciton>/admin*</web-resource-collection>  
        <auth-constraint>
            <role-name>admin</role-name>
         </auth-constraint>
  </security-constraint>

  <security-constraint>
      <web-resource-colleciton>*</web-resource-collection>  
        <auth-constraint>
            <role-name>admin</role-name>
            <role-name>user</role-name>
         </auth-constraint>
  </security-constraint>
  
</web-app>

Автор: gelo86 14.1.2010, 09:34
Цитата(dobrolub @  14.1.2010,  01:46 Найти цитируемый пост)
1. посмотри в сторону ear с двумя вебаппами и одним ejb задачей которого и будет общение с базой через хайбернейт.

Я используйы embedded jetty. В нем ето возможно ?

Автор: dobrolub 14.1.2010, 09:53
это только сервлет контайнер, может glassfish или resin?

Автор: gelo86 20.10.2010, 19:00
Цитата(COVD @  11.1.2010,  17:53 Найти цитируемый пост)
Данные меняются в едином хранилище (базе). А проблема кешей - синхронизироваться с хранилищем. 


Так проблема и состоит в том, что обновив данные в одной проге, мне надо в другой прочистить кеш/синхронизироваться с хранилищем. У меня толко томкат и вары. Просто клиент хочет имет две одделныэ проги для админа и для публика.

Автор: Key 20.10.2010, 23:25
Можно добавить репликацию кеша, например у JBossCache есть такая возможность или заюзать Ehcache + JGroups, вот тут описано 
http://ehcache.org/documentation/distributed_caching_with_jgroups.html
Смотря какой second level cache используете в Hibernate.
Тогда можно синхронизировать обновление кеша на всех серверах, там апдейт айтемов, удаление, что угодно.

Автор: mantracoder 20.10.2010, 23:39
Цитата(gelo86 @ 20.10.2010,  19:00)
Цитата(COVD @  11.1.2010,  17:53 Найти цитируемый пост)
Данные меняются в едином хранилище (базе). А проблема кешей - синхронизироваться с хранилищем. 


Так проблема и состоит в том, что обновив данные в одной проге, мне надо в другой прочистить кеш/синхронизироваться с хранилищем. У меня толко томкат и вары. Просто клиент хочет имет две одделныэ проги для админа и для публика.

По хорошему нужен общий бэкенд для админа и паблика.

Автор: gelo86 21.10.2010, 12:04
Цитата(mantracoder @  20.10.2010,  23:39 Найти цитируемый пост)
По хорошему нужен общий бэкенд для админа и паблика. 


Ето да. По другому и быть неможет. Бакенд (код) один, но гуи разные -> два инстанца будут запушены, один дла публика другой для админа.

Добавлено через 4 минуты и 11 секунд
Цитата(Key @  20.10.2010,  23:25 Найти цитируемый пост)
Можно добавить репликацию кеша, например у JBossCache есть такая возможность или заюзать Ehcache + JGroups


Можно будет сделать без третего сервера (как теракотта) ?

Автор: Key 21.10.2010, 22:36
Цитата

Можно будет сделать без третего сервера (как теракотта) ? 


Да, например через JGROUPS, там можно выбрать много вариантов (мультикаст с гарантированием доставки, TCP и т.п.). Часто для кластеров используют. Только не уверен работают ли с ним последние версии EhCache.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)