【问题标题】:Can I build a directory structure (JNDI) with the file based context factory com.sun.jndi.fscontext.RefFSContextFactory我可以使用基于文件的上下文工厂 com.sun.jndi.fscontext.RefFSContextFactory 构建目录结构 (JNDI)
【发布时间】:2010-09-13 18:29:21
【问题描述】:

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

【问题讨论】:

    标签: java jms jndi initial-context


    【解决方案1】:

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

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

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

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

    WebSphere MQ Using Java 手册中的 Manipulating Subcontexts 下有更多关于 IBM 实现的信息。虽然语法可能与您使用的不同,但该工具符合 JMS 并使用 com.sun.jndi.fscontext.RefFSContextFactory,因此原理相同。

    【讨论】:

    • 这不是问题所在。我想知道我们是否可以在目录结构中很好地构造子上下文,以便它更加组织化并且我们最终不会得到一个巨大的 .bindings 文件
    • 我猜使用 com.sun.jndi.fscontext.RefFSContextFactory 你只能拥有一个具有完整上下文的文件。
    • 如果你的意思是每个目录,那么是的。每个目录单独的 .bindings 有效,但单个 .bindings 文件中的上下文层次结构无效。
    猜你喜欢
    • 2011-10-13
    • 2014-06-23
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2018-12-27
    • 2016-07-12
    相关资源
    最近更新 更多