用于处理java对象的JNDI实现

时间:2015-06-01 17:12:41

标签: java jndi

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

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

  

重要 - 不得将对象持久保存到db / files等。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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