【问题标题】:JNDI implementation for working with java objects用于处理 java 对象的 JNDI 实现
【发布时间】:2015-06-01 17:12:41
【问题描述】:

我刚刚开始学习 JNDI。据我了解,它是不同命名服务的接口。

我决定将它用作我拥有的对象的注册表。例如,我有对象配置,我想通过 JNDI 从另一个对象中获取它。当然,我可以使用一些静态方式,例如Registry.get("configuration"),但我想开始使用 JNDI。我需要它用于 java se 应用程序。

重要 - 对象不能持久化到数据库/文件等。

但是我应该使用什么命名服务实现呢?如果有人提供一个例子,那就太好了。

【问题讨论】:

标签: java jndi


【解决方案1】:

JNDI 是一个命名提供者。通常的注册表(除了 JavaEE,稍后会介绍)是 LDAP 或 DNS。两个系统都按层次结构进行组织,并提供数据查找。

在 Java Enterprise 世界中,JNDI 用于检索在应用服务器容器中配置的 ConnectionFactories、EJB、DataSource、配置对象等等。

Java 中的 JNDI 起点是InitialContext。有一些实现允许在 JavaSE 中使用(例如测试中的 SimpleNamingContextBuilder),但一般来说,构建自己的 InitialContextFactory 是一个高级主题。

【讨论】:

  • 我实现了自己的 ContextFactory。简单,我需要的。
【解决方案2】:

Simple-JNDI 包含 JNDI 服务的纯内存实现。它提供了一种通过 JNDI 查找访问配置文件中的属性的方法。如果你不需要这个特性,你只能像这样使用 JNDI 实现:

Hashtable env = new Hashtable();
env.put("jndi.syntax.direction", "left_to_right");
env.put("jndi.syntax.separator", "/");
env.put("java.naming.factory.initial", "org.osjava.sj.memory.MemoryContextFactory");
Context ctx = new InitialContext(env);
Context subCtx = ctx.createSubcontext("sub1");
subCtx.bind("name", "value");
String name = (String) subCtx.lookup("name");
assertEquals("value", name);
name = (String) ctx.lookup("sub1/name");
assertEquals("value", name);

更多信息请点击此处:Simple-JNDI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2010-09-29
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多