1

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

4

1 回答 1

1

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

如何执行此操作取决于您使用的工具。我可以提供来自 WebSphere MQ 的 JMSAdmin 工具的示例,但其他示例的语法会略有不同(或完全不同)。由于在我们的两个示例中都使用了 Sun 的 FSContext,因此上下文遍历的工作方式相同,尽管我们的管理工具可能在语法上有所不同。

您可以使用 JMSAdmin DEFINE CTX(subcontext_name),这将创建一个目录,在该目录下将驻留 .bindings 文件。然后,您可以CHANGE CTX(subcontext_name)使该子上下文成为当前子上下文。您定义的任何内容现在都将位于该子上下文中的 .bindings 文件中。

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

在操作子上下文下的WebSphere MQ 使用 Java手册中有更多关于 IBM 实现的信息。尽管语法可能与您使用的不同,但该工具符合 JMS 并使用,因此原理是相同的。com.sun.jndi.fscontext.RefFSContextFactory

于 2010-09-10T21:04:16.210 回答