Search code examples
javajndi

What is the purpose of JNDI


How can you realize the usage of JNDI , with an example if possible?


Solution

  • JNDI is the Java Naming and Directory Interface. It's used to separate the concerns of the application developer and the application deployer. When you're writing an application which relies on a database, you shouldn't need to worry about the user name or password for connecting to that database. JNDI allows the developer to give a name to a database, and rely on the deployer to map that name to an actual instance of the database.

    For example, if you're writing code that runs in a Java EE container, you can write this to get hold of the data source with JNDI name "Database":

    
    DataSource dataSource = null;
    try
    {
        Context context = new InitialContext();
        dataSource = (DataSource) context.lookup("Database");
    }
    catch (NamingException e)
    {
        // Couldn't find the data source: give up
    }
    

    Note there's nothing here about the database driver, or the user name, or the password. That is configured inside the container.

    JNDI is not restricted to databases (JDBC); all sorts of services can be given names. For more details, you should check out Oracle's tutorial.