Initialcontext in a standalone Java program
java, jndi
Solution
You could also create your own custom context.
LocalContext ctx = LocalContextFactory.createLocalContext();
ctx.addDataSource("jdbc/testdb", driverName, url, usr, pwd);
See Running Beans Locally that use Application Server Data Sources for more details.
UPDATE
You can use the class `org.springframework.mock.jndi.SimpleNamingContextBuilder` of Spring. e.g.:
Setup:
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
builder.bind("jdbc/Oracle", ods);
builder.activate();
Use:
DataSource ds = InitialContext.doLookup("jdbc/Oracle");
Problem
I'm using a JNDI for creating connection pool. It works great in a web application. I believe the InitialContext is provided by the tomcat server. ``` Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); dataSource = (DataSource)envContext.lookup("jdbc/testdb"); ``` But when I try to call the same utility from a standalone Java program, the initContext object is null. How can I explicitly provide all the necessary properties that Context object is expecting. Error : javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial