![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| serious |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 15.2.2003 Где: Пенза Репутация: 1 Всего: 1 |
Есть самописный ORM-фреймворк. Требуется: блокировать открытые на редактирование объекты, т.е. делать их доступными "только для чтения".
Пример: 2 администратора открывают объект "Пользователь" с именем Вася с целью изменить его данные. В результате, тот администратор, который первым успел открыть этот объект, должен получить права на его редактирвание, а второй - только на чтение (до тех пор, пока первый администратор не закончит изменять открытый объект или не истечет время блокировки). Посоветуйте готовые решения для этой проблемы, пожалуйста. -------------------- Я знаю то, что ничего не знаю, а некоторые не знают и этого. |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Блокировка на уровне кэша. Решение - любой готовый кэш, поддерживающий эксклюзивную блокировку. Это сообщение отредактировал(а) w1nd - 7.11.2007, 14:43 -------------------- ![]() ![]() |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Я такие задачи не решал, но есть некоторые мысли которые возможно окажутся полезными.
Администраторы должны открывать не объект Пользователь, а некий декоратор - оболочку на Пользователем. т. е. объект с интерфейсом класса Пользователь, хранящий внутри себя реальный объект типа Пользователь и делегирующий ему все соответствующие операции. Администратор будет работать декоратором так, как будто это обыкновенный Пользователь. Но, при этом, перед вызовом делегируемого метода, декоратор может делать все необходимые проверки (например, не открыт ли этот Пользователь другим администратором). |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Поддерживаю ЗЫ. паттерн |
|||
|
||||
| serious |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 15.2.2003 Где: Пенза Репутация: 1 Всего: 1 |
w1nd, а пример библиотеки можешь привести? Как этот кэш работает?
Добавлено через 1 минуту и 14 секунд Maksym, а что делать с ситуацией, когда сущность связана с другой сущностью? Связанные объекты также необходимо блокировать. -------------------- Я знаю то, что ничего не знаю, а некоторые не знают и этого. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Декоратор должен работать с другими объектами тоже через декораторы, соотвественно вызвать у них методы блокировки, а те в свою очередь вызовут метод блокировки у декораторов своих зависимых обьектов. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |