| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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, 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> |
| Автор: dobrolub 14.1.2010, 09:53 |
| это только сервлет контайнер, может glassfish или resin? |
| Автор: gelo86 20.10.2010, 19:00 | ||
Так проблема и состоит в том, что обновив данные в одной проге, мне надо в другой прочистить кеш/синхронизироваться с хранилищем. У меня толко томкат и вары. Просто клиент хочет имет две одделныэ проги для админа и для публика. |
| Автор: 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 21.10.2010, 12:04 | ||
Ето да. По другому и быть неможет. Бакенд (код) один, но гуи разные -> два инстанца будут запушены, один дла публика другой для админа. Добавлено через 4 минуты и 11 секунд
Можно будет сделать без третего сервера (как теракотта) ? |
| Автор: Key 21.10.2010, 22:36 | ||
Да, например через JGROUPS, там можно выбрать много вариантов (мультикаст с гарантированием доставки, TCP и т.п.). Часто для кластеров используют. Только не уверен работают ли с ним последние версии EhCache. |