OCCI Connection Servlet : Database « Servlets « Java

Home
Java
1.2D Graphics GUI
2.3D
3.Advanced Graphics
4.Ant
5.Apache Common
6.Chart
7.Class
8.Collections Data Structure
9.Data Type
10.Database SQL JDBC
11.Design Pattern
12.Development Class
13.EJB3
14.Email
15.Event
16.File Input Output
17.Game
18.Generics
19.GWT
20.Hibernate
21.I18N
22.J2EE
23.J2ME
24.JavaFX
25.JDK 6
26.JDK 7
27.JNDI LDAP
28.JPA
29.JSP
30.JSTL
31.Language Basics
32.Network Protocol
33.PDF RTF
34.Reflection
35.Regular Expressions
36.Scripting
37.Security
38.Servlets
39.Spring
40.Swing Components
41.Swing JFC
42.SWT JFace Eclipse
43.Threads
44.Tiny Application
45.Velocity
46.Web Services SOA
47.XML
Java » Servlets » Database 




OCCI Connection Servlet

/*

Java Programming with Oracle JDBC
by Donald Bales 
ISBN: 059600088X
Publisher: O'Reilly

*/

import oracle.jdbc.pool.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.Vector;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.ConnectionPoolDataSource;

public class OCCIConnectionServlet extends HttpServlet {

  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Oracle Cached Connection "
        "Implementation Test Servlet</title>");
    out.println("</head>");
    out.println("<body>");

    // let's turn on verbose output
    OCCIConnection.setVerbose(true);
    // now let's get a cached connection
    Connection connection = OCCIConnection.checkOut();

    Statement statement = null;
    ResultSet resultSet = null;
    String userName = null;
    try {
      // test the connection
      statement = connection.createStatement();
      resultSet = statement
          .executeQuery("select initcap(user) from sys.dual");
      if (resultSet.next())
        userName = resultSet.getString(1);
    catch (SQLException e) {
      out.println("DedicatedConnection.doGet() SQLException: "
          + e.getMessage() "<p>");
    finally {
      if (resultSet != null)
        try {
          resultSet.close();
        catch (SQLException ignore) {
        }
      if (statement != null)
        try {
          statement.close();
        catch (SQLException ignore) {
        }
    }

    // let's add a little delay so we can force
    // multiple connections in the connection cache
    for (int o = 0; o < 3; o++) {
      for (int i = 0; i < 2147483647; i++) {
      }
    }

    // let's return the conection
    OCCIConnection.checkIn(connection);

    out.println("Hello " + userName + "!<p>");
    out.println("You're using an Oracle Cached "
        "Connection Implementation connection!<p>");
    out.println("</body>");
    out.println("</html>");
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {
    doGet(request, response);
  }
}

class OCCIConnection {
  private static boolean verbose = false;

  private static int numberImplementations = 0;

  private static Vector cachedImplementations = new Vector();

  public static synchronized Connection checkOut() {
    return checkOut("Database");
  }

  public static synchronized Connection checkOut(String baseName) {
    boolean found = false;
    OracleConnectionCacheImpl cached = null;
    Connection connection = null;
    if (verbose) {
      System.out.println("There are "
          + Integer.toString(numberImplementations)
          " connections in the cache");
      System.out.println("Searching for a matching implementation...");
    }
    for (int i = 0; !found && i < numberImplementations; i++) {
      if (verbose) {
        System.out.println("Vector entry " + Integer.toString(i));
      }
      cached = (OracleConnectionCacheImplcachedImplementations.get(i);
      if (cached.getDescription().equals(baseName)) {
        if (verbose) {
          System.out.println("found cached entry "
              + Integer.toString(i" for " + baseName);
        }
        found = true;
      }
    }
    if (!found) {
      if (verbose) {
        System.out.println("Cached entry not found ");
        System.out.println("Allocating new entry for " + baseName);
      }
      try {
        cached = new OracleConnectionCacheImpl(
            getConnectionPoolDataSource(baseName));
        cached.setDescription(baseName);
        cachedImplementations.add(cached);
        numberImplementations++;
      catch (SQLException e) {
        System.err.println(e.getMessage()
            " creating a new implementation for " + baseName);
      }
    }
    if (cached != null) {
      try {
        connection = cached.getConnection();
      catch (SQLException e) {
        System.err.println(e.getMessage() " getting connection for "
            + baseName);
      }
    }
    return connection;
  }

  public static ConnectionPoolDataSource getConnectionPoolDataSource(
      String baseName) {
    Context context = null;
    ConnectionPoolDataSource cpds = null;
    try {
      Properties properties = new Properties();
      properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
          "com.sun.jndi.fscontext.RefFSContextFactory");
      properties.setProperty(Context.PROVIDER_URL, "file:/JNDI/JDBC");
      context = new InitialContext(properties);
      cpds = (ConnectionPoolDataSourcecontext.lookup(baseName);
    catch (NamingException e) {
      System.err.println(e.getMessage() " creating JNDI context for "
          + baseName);
    }
    return cpds;
  }

  protected static synchronized void checkIn(Connection c) {
    try {
      c.close();
    catch (SQLException e) {
      System.err.println(e.getMessage() " closing connection");
    }
  }

  public static String[] getReport() {
    int line = 0;
    String[] lines = new String[numberImplementations * 7];
    OracleConnectionCacheImpl cached = null;

    for (int i = 0; i < numberImplementations; i++) {
      cached = (OracleConnectionCacheImplcachedImplementations.get(i);
      lines[line++= cached.getDescription() ":";
      switch (cached.getCacheScheme()) {
      case OracleConnectionCacheImpl.DYNAMIC_SCHEME:
        lines[line++"Cache Scheme  = DYNAMIC_SCHEME";
        break;
      case OracleConnectionCacheImpl.FIXED_RETURN_NULL_SCHEME:
        lines[line++"Cache Scheme  = FIXED_RETURN_NULL_SCHEME";
        break;
      case OracleConnectionCacheImpl.FIXED_WAIT_SCHEME:
        lines[line++"Cache Scheme  = FIXED_WAIT_SCHEME";
        break;
      }
      lines[line++"Minimum Limit = "
          + Integer.toString(cached.getMinLimit());
      lines[line++"Maximum Limit = "
          + Integer.toString(cached.getMaxLimit());
      lines[line++"Cache Size    = "
          + Integer.toString(cached.getCacheSize());
      lines[line++"Active Size   = "
          + Integer.toString(cached.getActiveSize());
      lines[line++" ";
    }
    return lines;
  }

  public static void setVerbose(boolean v) {
    verbose = v;
  }

}

           
       














Related examples in the same category
1.Servlets Database Query
2.Using JDBC in Servlets
3.Cached Connection Servlet
4.Transaction Connection Servlet
5.Session Login JDBC
6.JDBC and Servlet
7.Database and Servlet: Database MetaData
8.Database and Servlet: Store procedure
9.Database transaction
10.Typical database commands
11.Process a raw SQL query; use ResultSetMetaData to format it
12.See Account
13.Guest Book Servlet
14.Dedicated Connection Servlet
15.Login Servlets
16.Get Column Names From ResultSet
17.Display Clob Servlet
18.Delete Blob From Servlet
19.Delete Clob From Servlet
20.Display Blob Servlet
21.Delete Clob From Oracle in a Servlet
22.Insert Clob to MySql Servlet
23.Update Clob data stored in MySql from a Servlet
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.