Skip to content

Programmatically create your contexts and context objects (no resource files needed)

Holger Thurow edited this page Nov 24, 2019 · 3 revisions

In jndi.properties:

java.naming.factory.initial = org.osjava.sj.SimpleJndiContextFactory
org.osjava.sj.delimiter = .
jndi.syntax.separator = /
org.osjava.sj.jndi.shared = true

While your application initializes describe your JNDI resources programmatically:

Properties properties = new Properties();

properties.setProperty("org.osjava.sj.myBean.type", DemoBean.class.getName());
properties.setProperty("org.osjava.sj.myBean.javaxNamingSpiObjectFactory", DemoBeanFactory.class.getName());
properties.setProperty("org.osjava.sj.myBean.size", "186");
properties.setProperty("org.osjava.sj.myBean.fullName", "Holger Thurow");

properties.setProperty("org.osjava.sj.myBean2.type", DemoBean2.class.getName());
properties.setProperty("org.osjava.sj.myBean2.javaxNamingSpiObjectFactory", DemoBeanFactory2.class.getName());
properties.setProperty("org.osjava.sj.myBean2.inhabitants", "3754418");
properties.setProperty("org.osjava.sj.myBean2.city", "Berlin");

Also during initialization let Simple-JNDI create the contexts and the objects:

InitialContext ctx = new InitialContext();
JndiLoader loader = new JndiLoader(ctx.getEnvironment());
loader.load(properties, ctx);

Elsewhere in your application use the objects:

InitialContext ctx = new InitialContext();

Object demoBean1 = ctx.lookup("org/osjava/sj/myBean");
assertEquals(DemoBean.class.getName(), demoBean1.getClass().getName());

Object demoBean2 = ctx.lookup("org/osjava/sj/myBean2");
assertEquals(DemoBean2.class.getName(), demoBean2.getClass().getName());

Context sjCtx = (Context) ctx.lookup("org/osjava/sj");
assertNotNull(sjCtx);