"Но профиль, из которого я выполняю поиск, в конечном итоге выполняет поиск в своем собственном узле."
Позвольте мне убедиться, что я понимаю, что вы говорите:
Ваше приложение работает в профиле A, ваш EJB развернут в профиле B.
В профиле B у нас есть несколько узлов, N1, N2, ... при выполнении поиска приложение подключается к одному из узлов, скажем, N2, и по умолчанию при выполнении поиска в N2 мы видим дерево JNDI, связанное с Узел N2, который может не находиться там, где EJB зарегистрировал свое имя.
Это твоя проблема?
Если это так, то есть два возможных подхода.
- Навигация по JNDI, начиная с ячеек
- Использовать ячейку / постоянный раздел - я рекомендую это
Вариант 1: все дерево JNDI видно из любого узла. См. диаграмму JNDI в инфоцентре. Затем вы можете перемещаться по иерархии, указав путь в этом стиле
cells/<mycell>/nodes/<ejbNode>/... etc.
откуда угодно.
Проблема этого подхода заключается в том, что приложению необходимо понимать топологию ячейки. Если имена узлов (или имена кластеров) должны измениться, строка поиска изменится. Это хрупкое решение.
Вариант 2: Вместо этого EJB-регистр должен находиться в стабильном месте в дереве JNDI. Это то, для чего нужен постоянный раздел ячейки. Сначала вы изменяете EJB (или его DD), чтобы указать имя как
cell/persistent/myEjb
и затем используйте эту строку в вашем поиске.