Могу ли я построить структуру каталогов (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
поэтому принципы будут такими же.