2015-02-27 3 views
0

В нашем проекте мы хотели бы создать кеш для информации LDAP, и кажется, что Guava - хороший выбор.Доступен ли кэш Guava в EJB 3.0

Однако у меня есть некоторые проблемы, так как мы используем EJB 3.0.

В принципе, у нас есть один класс UserDAO, который отвечает за получение необходимой информации LDAP, а кэш Guava объявляется статичным в UserDAO.

Могу ли я просто использовать этот UserDAO в ejbs? У меня две проблемы: 1. ejb не разрешает чтение/запись статического поля, если ejbs запускаются в нескольких JVM. UserDAO уже имеет статический кеш. 2. ejb не позволяет создавать собственные потоки пользователей, и я думаю, что это правило распространяется на использование библиотеки MultiThread? Я не уверен, как реализован Guava Cache?

Спасибо!

+0

Технически управление потоками выполняется Guava: вы сами не выполняете управление. Кроме того, избегайте 'static', попробуйте использовать' @ Singleton' для переноса вашей реализации кэша. Например, посмотрите http://blog.iadvise.eu/2014/01/13/caching-in-a-jee-dont-write-it-yourself-use-loadingcache-from-google-guava-libraries/. –

+0

Спасибо, Оливье! Тем не менее, @Singleton пока недоступен в ejb 3.0, я думаю. Кроме того, даже Guava управляет потоками, они все еще являются нитями, неизвестными контейнером ejb? – songofsp3

ответ

0

Я не считаю правильным использовать Guava Cache в EJB.

Хотя Guava Cache не создает новую тему, он управляет Thread. В кеше находятся sychronized и ReentrantLock. Таким образом, это не правильное поведение в EJB.

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