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