Могу ли я построить структуру каталогов (JNDI) с помощью фабрики контекста на основе файлов com.sun.jndi.fscontext.RefFSContextFactory

С использованием com.sun.jndi.fscontext.RefFSContextFactory Фабрика контекста JNDI, основанная на файлах, и кажется, что она разрешает только 1 файл привязки в указанном вами месте Например

Hashtable properties = new Hashtable(2);
properties.put(Context.PROVIDER_URL,"file:///tmp/jms/mycontext");
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
InitialContext ctx = new InitialContext(properties);

Есть ли способ создать структуру каталогов, скажем, для comp.env, чтобы в каждом каталоге был файл привязок? (Вместо указания полного контекста в самом файле привязок)

1 ответ

Решение

Каждый каталог - это субконтекст, доступ к которому осуществляется в виде пути. Каталоги - это узлы ветвей, каждый из которых содержит.bindings в качестве своего конечного узла. Каждая ветвь может иметь ровно один лист и ноль или более дополнительных ветвей.

Как вы это сделаете, зависит от того, какой инструмент вы используете. Я могу привести примеры из инструмента JMSAdmin в WebSphere MQ, но у других будет немного (или дико) другой синтаксис. Поскольку FSContext от Sun используется в обоих наших примерах, обход контекста работает одинаково, хотя наши административные инструменты могут различаться по синтаксису.

Используя JMSAdmin вы можете DEFINE CTX(subcontext_name) и это создает каталог, в котором будет находиться файл.bindings. Вы можете тогда CHANGE CTX(subcontext_name) сделать этот подконтекст текущим. Все, что вы определите, теперь будет в файле.bindings внутри этого подконтекста.

В вашем коде вы ссылаетесь на подконтекст как путь. Например, после открытия исходного контекста вы можете искать объект как subcontext_name/foo,

Более подробную информацию о реализации IBM в этом можно найти в руководстве по использованию Java в WebSphere MQ в разделе " Управление подконтекстами". Хотя синтаксис может отличаться от того, что вы используете, инструмент совместим с JMS и использует com.sun.jndi.fscontext.RefFSContextFactory поэтому принципы будут такими же.

Другие вопросы по тегам