-
Notifications
You must be signed in to change notification settings - Fork 18
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);