用于处理 java 个对象的 JNDI 实现
JNDI implementation for working with java objects
我刚刚开始学习 JNDI。据我了解,它是不同命名服务的接口。
我决定将它用作我拥有的对象的注册表。例如,我有对象配置,我想通过 JNDI 从另一个对象中获取它。当然我可以使用一些静态方式,例如 Registry.get("configuration")
但我想开始使用 JNDI。 java se 应用程序需要它。
Important - objects mustn't be persisted to db/files etc.
但是我应该使用什么样的命名服务实现?如果有人提供一个例子那就太好了。
JNDI 是命名提供程序。通常的注册表(除了 JavaEE,稍后会提到)是 LDAP 或 DNS。这两个系统都是按层次结构组织的,并提供数据查找。
在 Java 企业世界中,JNDI 用于检索 ConnectionFactories、EJB、DataSources、配置对象等等,这些都是在应用程序服务器容器中配置的。
Java 中的 JNDI 起点是 InitialContext
。有些实现允许在 JavaSE 中使用(例如 SimpleNamingContextBuilder within tests) but in general, building an own InitialContextFactory 是一个高级主题。
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
我刚刚开始学习 JNDI。据我了解,它是不同命名服务的接口。
我决定将它用作我拥有的对象的注册表。例如,我有对象配置,我想通过 JNDI 从另一个对象中获取它。当然我可以使用一些静态方式,例如 Registry.get("configuration")
但我想开始使用 JNDI。 java se 应用程序需要它。
Important - objects mustn't be persisted to db/files etc.
但是我应该使用什么样的命名服务实现?如果有人提供一个例子那就太好了。
JNDI 是命名提供程序。通常的注册表(除了 JavaEE,稍后会提到)是 LDAP 或 DNS。这两个系统都是按层次结构组织的,并提供数据查找。
在 Java 企业世界中,JNDI 用于检索 ConnectionFactories、EJB、DataSources、配置对象等等,这些都是在应用程序服务器容器中配置的。
Java 中的 JNDI 起点是 InitialContext
。有些实现允许在 JavaSE 中使用(例如 SimpleNamingContextBuilder within tests) but in general, building an own InitialContextFactory 是一个高级主题。
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