JNDI поиск по классу - PullRequest
       0

JNDI поиск по классу

0 голосов
/ 18 ноября 2011

У нас есть несколько сервисов (EJB), которые мы хотим искать, используя локальные или удаленные интерфейсы. Не имеет значения, найдем ли мы потенциально более одной реализации, потому что если мы позволим этому случиться, это специально.

Поскольку у нас нет прямого доступа к контейнеру EJB, нам нужно использовать поиск JNDI.

В настоящее время мы перебираем контексты, используя Context#listBindings("") и проверяем, является ли возвращаемый объект в каждой привязке контекстом - в этом случае мы вызываем поиск рекурсивно - или его можно назначить интерфейсу, который мы ищем для - в этом случае мы закончили.

Однако, выполнение этого может привести к целой куче поисков, так как мне пришлось бы вызывать list("") для каждого подконтекста, который я нахожу (что может быть довольно много в больших приложениях).

Так есть ли способ сделать поиск на основе классов в JNDI за один вызов (или определенное количество вызовов)?

Кстати, мы делаем это на JBoss 4.2.3.GA, поэтому у нас нет доступа к реализациям JNDI в Java EE 6.

1 Ответ

1 голос
/ 18 ноября 2011

Одним словом: Нет. Ваш вариант использования слишком особенный.

Но у вас есть несколько вариантов:

  1. Почему бы вам не зарегистрировать Spring ApplicationContext через JNDI? Это позволит вам позвонить getBean(type).

  2. Вместо того, чтобы снова и снова делать эти поиски, добавьте фабрику в свой код, который кэширует поиски?

  3. Как насчет создания "EJB поиска службы"?

...