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

Category: javax.naming, viewed: 10625 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;
    }
}
Click here to lend your support to: Kode Java Org and make a donation at www.pledgie.com !

 

Uncensored Newsgroups
Download Hundreds of Complimentary Industry Resources

Get hundreds of popular Industry magazines, white papers, webinars, podcasts, and more; all available at no cost to you. With more than 600 complimentary offers, you'll find plenty of titles to suit your professional interests and needs. Click Here and Sign up today!

Java Training

Sponsored Links

Our Friends

Statistics

Locations of visitors to this page
visitor stats