У нас есть несколько сервисов (EJB), которые мы хотим искать, используя локальные или удаленные интерфейсы. Не имеет значения, найдем ли мы потенциально более одной реализации, потому что если мы позволим этому случиться, это специально.
Поскольку у нас нет прямого доступа к контейнеру EJB, нам нужно использовать поиск JNDI.
В настоящее время мы перебираем контексты, используя Context#listBindings("")
и проверяем, является ли возвращаемый объект в каждой привязке контекстом - в этом случае мы вызываем поиск рекурсивно - или его можно назначить интерфейсу, который мы ищем для - в этом случае мы закончили.
Однако, выполнение этого может привести к целой куче поисков, так как мне пришлось бы вызывать list("")
для каждого подконтекста, который я нахожу (что может быть довольно много в больших приложениях).
Так есть ли способ сделать поиск на основе классов в JNDI за один вызов (или определенное количество вызовов)?
Кстати, мы делаем это на JBoss 4.2.3.GA, поэтому у нас нет доступа к реализациям JNDI в Java EE 6.