How do I use JNDI to get database connection or data source?

Bookmark this example!  
Category: javax.naming, viewed: 1239 time(s).
 
package org.kodejava.example.jndi;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
 
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
 
public class JNDITestServlet extends HttpServlet implements Servlet {
 
    protected void doGet(HttpServletRequest request,
	    HttpServletResponse response) throws ServletException, IOException {
	//
	// This implementation of doGet method show us an example to use
	// connection obatained in the getConnection() method.
	//
 
	DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
 
	response.setContentType("text/html");
	PrintWriter writer = response.getWriter();
 
	Connection connection = getConnection();
	if (connection != null) {
	    try {
		//
		// A query to get current date time from Oracle database
		//
		String sql = "SELECT SYSDATE FROM DUAL";
		PreparedStatement statement = connection.prepareStatement(sql);
		ResultSet rs = statement.executeQuery();
 
		while (rs.next()) {
		    Date date = rs.getDate("SYSDATE");
		    writer.println("The current date is "
			    + dateFormat.format(date));
		}
	    } catch (SQLException e) {
		e.printStackTrace();
	    } finally {
		try {
		    if (!connection.isClosed()) {
			connection.close();
		    }
		} catch (SQLException e) {
		    e.printStackTrace();
		}
	    }
	}
    }
 
    protected void doPost(HttpServletRequest request,
	    HttpServletResponse response) throws ServletException, IOException {
    }
 
    /**
     * Get a database connection from the registered data source in the servlet
     * container. To registered the JNDI data source you should refer to your
     * servlet container documentation.
     * 
     * @return a database connection
     */
    private Connection getConnection() {
	Connection connection = null;
	try {
	    InitialContext context = new InitialContext();
	    DataSource dataSource = (DataSource) context
		    .lookup("jdbc/DataSource");
	    connection = dataSource.getConnection();
	} catch (NamingException e) {
	    e.printStackTrace();
	} catch (SQLException e) {
	    e.printStackTrace();
	}
	return connection;
    }
}
 
 
Can't find what you are looking for? Join our FORUMS and ask some questions!
Firefox 2
Google

100 Top & Latest

GetJava Download Button

Locations of visitors to this page
eXTReMe Tracker
visitor stats