Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Кэш в EJB. В сессион фасаде


Автор: chief39 18.10.2006, 16:12
Всем привет.

Есть архитектурная задача - сделать кэш некоего байт-кода внутри сессион фасада.

Просто в тупую тянуть из базы не придётся - будет получаться всякими разными методами.

Но суть такая: 
мы получаем набор данных,
можем проверить, соответствует ли текущая запись реалии,
можем освежить её.

Через данный механизм происходить будет только чтение.

И тут, откуда не возьмись(действительно неожиданно лдя меня) - проблема - где держать???

Естественно, напрашивается вариант стэйтфул бина.

Но. Для разных бинов, попросивших инфу - будут созданы копии сего стэйтфула, да ещё и будут держать в себе по копии - совсем обратный результат... smile

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

То есть: есть стейтлесс фасад - ему один кэш(на все экземпляры)
Появляется, допустим, иной фасад, требующий такой же кэш - ему тоже один инстанс.

Есть мысли?

Гугл и поиск ничерта не подсказал. Кроме того, что стэйтлесс - зло(ну как обычно)
В книжках вроде есть, но пока я её куплю....



Автор: y3u 18.10.2006, 17:14
сделай пул объектов на основе этого бина и все, пул сам будет знать когда кому сколько чего дать

Автор: chief39 18.10.2006, 17:24
Цитата(y3u @  18.10.2006,  17:14 Найти цитируемый пост)
сделай пул объектов на основе этого бина и все,

Ммм... можно подробнее?

Автор: w1nd 18.10.2006, 20:33
Видимо, y3u имел в виду некий синглтон-пул (кэш), интерфейсом к которому будет stateless бин.

Лучше всего, если у хранимых объектов есть хоть какая-то идентифицирующая их информация, сделать их entity BMP'шками - кэш нахаляву и не зависит от пользователей.

З. Ы. Есть еще resource adapters.

Цитата(chief39 @  18.10.2006,  16:12 Найти цитируемый пост)
что стэйтлесс - зло

Молоток - зло. Им можно по пальцу ударить smile

Автор: chief39 19.10.2006, 12:14
Цитата(w1nd @  18.10.2006,  20:33 Найти цитируемый пост)
Цитата(chief39 @  18.10.2006,  16:12 Найти цитируемый пост)
что стэйтлесс - зло

Молоток - зло. Им можно по пальцу ударить

Тьху..  Стэйтфул

Цитата(w1nd @  18.10.2006,  20:33 Найти цитируемый пост)
Лучше всего, если у хранимых объектов есть хоть какая-то идентифицирующая их информация, сделать их entity BMP'шками - кэш нахаляву и не зависит от пользователей.

Ээээ... если бы так... 

Я же говорил
Цитата(chief39 @  18.10.2006,  16:12 Найти цитируемый пост)
Просто в тупую тянуть из базы не придётся - будет получаться всякими разными методами.

Просто, наверное, неясно выразился.

Объекты эти в базе хранится в plain виде не будут.
Готовый объект, который, собственно, и будет кэшироваться - штука сборная.
Перед тем, как он возникнет в нужном виде, будут подтягиваться некоторые энтити, парситься, компилиться, сливаться в одно целое и только потом готовый горшок мы уже вешаем сушиться в кэш.


Цитата(w1nd @  18.10.2006,  20:33 Найти цитируемый пост)
З. Ы. Есть еще resource adapters.

Угу. Так пока и делаем.
Но всё же... Как-то некошерно выходит что нельзя это естественным путём слепить.

Нашёл для вэбсферы в конфигах возможность "разрешить стэйтфул для одновременного обращения разных клиентов", но во-первых, у меня не сфера, во-вторых, хочется стандартными средствами, а не фичами аппсерверов

Автор: w1nd 19.10.2006, 14:15
Цитата(chief39 @  19.10.2006,  12:14 Найти цитируемый пост)
Тьху..  Стэйтфул

Да без разницы smile Готовить не умеют, вот и говорят.


Цитата(chief39 @  19.10.2006,  12:14 Найти цитируемый пост)
Я же говорилЦитата(chief39 @  18.10.2006,  16:12 )Просто в тупую тянуть из базы не придётся - будет получаться всякими разными методами.Просто, наверное, неясно выразился.

Стоп. А я и не говорил о базе. Entity BMP вообще-то может наполняться данными откуда угодно и как угодно. Запихиваете все нужные процедуры в ejbLoad и горшок готов.

Автор: chief39 23.10.2006, 16:29
Цитата(w1nd @  19.10.2006,  14:15 Найти цитируемый пост)
Да без разницы smile Готовить не умеют, вот и говорят.

Ну я бы так резко не заявлял smile Толпы стэйтфулов и в самом деле - тяжкая вещь smile


Цитата(w1nd @  19.10.2006,  14:15 Найти цитируемый пост)
Entity BMP вообще-то может наполняться данными откуда угодно и как угодно. Запихиваете все нужные процедуры в ejbLoad и горшок готов.

От энтити, возможно, будем отказываться понемногу.

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

Автор: w1nd 23.10.2006, 17:18
Цитата(chief39 @ 23.10.2006,  16:29)
Ну я бы так резко не заявлял smile Толпы стэйтфулов и в самом деле - тяжкая вещь smile

Так я и говорю - молотком по пальцу тоже досадно ;) Надо учиться попадать по гвоздю smile 

З. Ы.

Цитата(chief39 @ 23.10.2006,  16:29)
Также, необходима будет версионность сущностей...
И ещё одно... таких кэшей будет несколько... разброс сущностей по "одному из" будет осуществляться отдельным алгоритмом...
То есть нужен не просто всеобщий кэш сущности, а возможность держать общий набор данных в памяти доступным для обращений на чтение разными стейтлессами. 

Все эти задачи, кстати, пока еще решаются с помощью BMP smile 


Автор: chief39 23.10.2006, 17:55
Цитата(w1nd @  23.10.2006,  17:18 Найти цитируемый пост)
Надо учиться попадать по гвоздю

Безусловно...

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