Слушайте изменения в JNDI на Glassfish - как искать EventContext? - PullRequest
2 голосов
/ 01 сентября 2011

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

Насколько я понимаю, я должен реализовать javax.naming.event.ObjectChangeListener, найти EventContext или EventDirContext из JNDI, а затем вызвать его addNamingListener метод, чтобы зарегистрировать мой ObjectChangeListener.

Чтобы посмотреть EventContext или EventDirContext, я попробовал это, и многочисленные примеры онлайн посоветовали мне:

InitialContext ctx = new InitialContext();
EventContext eventContext = (EventContext) ctx.lookup("");

Однако, это дает мне ClassCastException:

java.lang.ClassCastException: com.sun.enterprise.naming.impl.SerialContext cannot be cast to javax.naming.event.EventContext

Я также получаю эквивалентную ошибку при попытке привести к EventDirContext.

Вместо «» я попытался найти точные имена JNDI, которые я использую, а также «java:», «java: comp» и «java: comp / env». Все они возвращают Объекты, которые нельзя привести ни к одному из нужных мне контекстов событий.

Реализация JNDI, которую я использую - это просто Glassfish 3.1.1.

Можно ли слушать события JNDI или мне следует рассмотреть другой подход в целом? Ценю любые предложения.

1 Ответ

0 голосов
/ 12 июня 2012

Событие JNDI не поддерживается в GlassFish 3.1.2.

...