2009-08-24 2 views
1

Мне нужно реализовать простой компонент DAO, который также кэширует данные, считанные из базы данных. Этот компонент DAO используется без фасов.Как реализовать Singleton-like EJB3.0 bean?

Поскольку EJB3.0 не поддерживает одноэлементные бобы, какой был бы правильный способ реализовать такой компонент DAO? Можно ли использовать статическую переменную для хранения кеша?

Мы используем Oracle AS и не собираемся использовать кластеризацию.

ответ

4

«Правильный» способ сделать это несколько поперечным сервером - использовать jmx mbean для поведения кэширования. mbeans - это singleletons (сервер для каждого приложения) и могут делать такие вещи, как потоки и блокировка. в зависимости от используемого вами сервера приложений, конечно, mbeans можно более или менее трудно работать на практике.

2

Большинство серверов приложений и реализации JPA предлагают своего рода встроенный механизм кэширования, который контролируется пользователем. Возможно, стоит исследовать способы достижения того, чего вы хотите, не создавая синглтон.

Одна из основных проблем с одиночными точками и J2EE заключается в том, что нет простого способа справиться с ними в кластерной среде.

Это все сказанное, я найти article, что делает некоторые предложения для возможности делать то, что вы хотите под JBoss, и упоминает новый @Singleton аннотацию EJB3.1 так, что может быть возможность. Если это сработает для вас, вы должны написать, что вы сделали, как еще один ответ на этот вопрос.

+0

Мы уже используем кеширование EclipseLink, однако у нас есть несколько случаев, когда этого недостаточно, и мы должны вручную реализовать кэширование – tputkonen

0

Если вы работаете на сервере Weblogic, на самом деле можно реализовать одноэлементный компонент, который также является кластерным. Я не считаю, что эта функция существует на других серверах приложений.

Смежные вопросы