Существуют ли простые реализации JNDI-контекста, которые могут быть запущены / остановлены и т. Д. Без утечек? - PullRequest
0 голосов
/ 03 января 2011

Я не особенно поклонник JNDI - я думаю, что это плохая технология, когда кто-то хочет использовать OSGI по ряду причин.

  • JNDI не является автономным.
  • Слишком легко просачиваться и оставлять вещи в jndi.
  • Слишком легко получать конфликты, потому что он основан на строках.
  • JNDI часто является глобальной вещью, не имеющей области действия - любой вкладывает средства в то, чтобы при привязке не возникало конфликтов имен.
  • Должно быть меньше сокетов - поиск объектов только с карты.

Я хотел бы контролировать контекст jndi. Мне нужно использовать слой JMS Hornet, который, к сожалению, использует JNDI для регистрации очередей, тем и т. Д. Вместо того, чтобы предоставлять свой собственный закодированный контекст jndi, я хотел бы попытаться использовать другой, предоставляя его область действия, а не глобальную.

Есть ли у кого-нибудь решения / предложения по решению этой проблемы?

Ответы [ 3 ]

1 голос
/ 29 января 2014

SimpleJNDI - это реализация JNDI с открытым исходным кодом, которая поддерживает контексты в памяти и может быть заполнена из дерева папок (под-контекстов) и свойств / файлов XML (объектов).

Более подробная информация на официальном сайте: http://code.google.com/p/osjava/wiki/SimpleJNDI (документация находится в загружаемом архиве).

(P.S .: это не активный проект - последний выпуск от 2010 года - но это может помочь в любом случае ...)

1 голос
/ 04 февраля 2017

Я думаю, что Simple-JNDI мог бы удовлетворить ваше требование, «предоставляя свою область действия, а не глобальную».Вы можете настроить его для создания общих или неразделенных контекстов.В режиме общего доступа каждый раз, когда вы звоните

Context ctx = new InitialContext()

, вы получаете уникальную копию определения вашего контекста в памяти, которую может видеть и изменять только вызывающий код.перейти к https://github.com/h-thurow/Simple-JNDI.Это активный проект, который основан на старой OSJAVA Simple-JNDI.

1 голос
/ 10 января 2011

Вам не нужна реализация контекста JNDI для решения этой проблемы. Вам просто нужно правильно запрограммировать получение и выпуск ресурсов, как в остальной части Java: в основном, через Context.close() в finally{} блоках. Также обязательно закройте все NamingEnumerations, которые у вас могут быть.

...