Java 我是否可以使用基于文件的上下文工厂com.sun.JNDI.fscontext.RefFSContextFactory构建目录结构(JNDI)

Java 我是否可以使用基于文件的上下文工厂com.sun.JNDI.fscontext.RefFSContextFactory构建目录结构(JNDI),java,jms,jndi,initial-context,Java,Jms,Jndi,Initial Context,使用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.jn

使用
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创建一个目录结构,这样每个目录都有一个绑定文件?(而不是在绑定文件本身中指定完整的上下文)

每个目录都是作为路径访问的子上下文。目录是每个包含.bindings作为其叶节点的分支节点。每个分支只能有一个叶和零个或多个附加分支

如何做到这一点取决于您使用的工具。我可以提供WebSphereMQ的JMSAdmin工具的示例,但其他工具的语法略有不同(或大不相同)。由于在我们的两个示例中都使用了Sun的FSContext,因此尽管我们的管理工具在语法上可能有所不同,但上下文遍历的工作原理是相同的

使用JMSAdmin,您可以
定义CTX(subcontext\u name)
,这将创建一个目录,其中将驻留一个.bindings文件。然后,您可以
更改CTX(子文本\u名称)
以使该子文本成为当前子文本。您定义的任何内容现在都将位于该子上下文中的.bindings文件中

在代码中,您将子上下文称为路径。例如,打开初始上下文后,可以将对象作为
子上下文\u name/foo
查找


下面的手册中有更多关于IBM实现这一点的信息。尽管语法可能不同于您使用的语法,但该工具符合JMS,并使用
com.sun.jndi.fscontext.RefFSContextFactory
,因此原则相同。

每个目录都是作为路径访问的子上下文。目录是每个包含.bindings作为其叶节点的分支节点。每个分支只能有一个叶和零个或多个附加分支

如何做到这一点取决于您使用的工具。我可以提供WebSphereMQ的JMSAdmin工具的示例,但其他工具的语法略有不同(或大不相同)。由于在我们的两个示例中都使用了Sun的FSContext,因此尽管我们的管理工具在语法上可能有所不同,但上下文遍历的工作原理是相同的

使用JMSAdmin,您可以
定义CTX(subcontext\u name)
,这将创建一个目录,其中将驻留一个.bindings文件。然后,您可以
更改CTX(子文本\u名称)
以使该子文本成为当前子文本。您定义的任何内容现在都将位于该子上下文中的.bindings文件中

在代码中,您将子上下文称为路径。例如,打开初始上下文后,可以将对象作为
子上下文\u name/foo
查找


下面的手册中有更多关于IBM实现这一点的信息。尽管语法可能与您使用的不同,但该工具符合JMS,并使用
com.sun.jndi.fscontext.RefFSContextFactory
,因此原则是相同的。

这不是问题所在。我想知道我们是否可以在目录结构中很好地构造子上下文,这样它就更加组织化,并且我们不会得到一个巨大的.bindings文件。我猜使用com.sun.jndi.fscontext.RefFSContextFactory,您只能有一个具有完整上下文的文件。如果您是指每个目录,那么是的。每个目录单独的.bindings可以工作,但在单个.bindings文件中没有上下文层次结构。这不是问题所在。我想知道我们是否可以在目录结构中很好地构造子上下文,这样它就更加组织化,并且我们不会得到一个巨大的.bindings文件。我猜使用com.sun.jndi.fscontext.RefFSContextFactory,您只能有一个具有完整上下文的文件。如果您是指每个目录,那么是的。每个目录单独的.bindings起作用,但不是单个.bindings文件中的上下文层次结构。