2010-03-02 3 views
2

У меня есть веб-служба jboss, которая получает неправильный исходный контекст. Я хочу, чтобы он использовал java.naming.factory.initial из jndi.properties в корневом каталоге служб, а не в jboss jndi.properties, который является NamingContextFactory. В файле сборки муравья я поместил jndi.properties в путь к классам и убедился, что он копируется в архив, но служба по-прежнему получает NamingContextFactory. Как я могу узнать, какой из jndi.properties используется, чтобы завод правильно настроился?заказ нескольких jndi.properties на пути к классам

К сожалению ситуация такова, что у меня есть баночка третьей стороны, я должен использовать, что ожидает своего первоначального контекста завод, чтобы быть один указано в упакованном jndi.properties файл, но когда я запускаю это в JBoss он получает NamingContextFactory. Я не могу изменить файл jboss jndi.properties без всякого взлома.

+0

Возможно, вам придется выполнить зарядку по зарядке класса JBoss. Является ли JAR частью EAR или WAR? – skaffman

+1

Это часть EAR. – insipid

ответ

2

Если у вас есть несколько файлов jndi.properties в корневом каталоге пути к классам, то InitialContext предпримет попытку слияния двух, но один из них будет более или менее случайным.

Если вы хотите убедиться, то InitialContext имеет конструктор, который принимает Hashtable свойств, где вы можете указать их явно. Это было бы предпочтительнее неявной загрузки через jndi.properties, в этом случае. Вы всегда можете загрузить свою цель jndi.properties в объект Properties (который является подклассом Hashtable) и передать его конструктору.

+0

Отредактировано мое сообщение, чтобы включить, что я не контролирую начальный запрос контекста, который имеет сторонняя библиотека ... :( – insipid

Смежные вопросы