Servlets Java

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
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.DataSource;
public class StoredProcServlet extends HttpServlet {
  DataSource pool;
  public void init() throws ServletException {
    Context env = null;
    try {
      env = (Context) new InitialContext().lookup("java:comp/env");
      pool = (DataSource) env.lookup("jdbc/oracle-8i-athletes");
      if (pool == null)
        throw new ServletException(
            "'oracle-8i-athletes' is an unknown DataSource");
    } catch (NamingException ne) {
      throw new ServletException(ne);
    }
  }
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, java.io.IOException {
    String eventName = request.getParameter("name");
    String location = request.getParameter("location");
    String date = request.getParameter("date");
    List paramList = new ArrayList();
    paramList.add(eventName);
    paramList.add(location);
    paramList.add(date);
    try {
      addRaceEvent(paramList);
    } catch (SQLException sqle) {
      throw new ServletException(sqle.getMessage());
    }
    response.setContentType("text/html");
    java.io.PrintWriter out = response.getWriter();
    out.println("Add an Event");
    out.println("

The Event named " + eventName
        + " has been added to the database

");
    out.println("");
    out.println("");
    out.close();
  } //doGet
  public Connection getConnection() {
    Connection conn = null;
    try {
      conn = pool.getConnection();
    } catch (SQLException sqle) {
      throw new ServletException(sqle.getMessage());
    } finally {
      return conn;
    }
  }
  public void addRaceEvent(List values) throws SQLException {
    if (values == null)
      throw new SQLException("Invalid parameter in addRaceEvent method.");
    Connection conn = null;
    conn = getConnection();
    if (conn == null)
      throw new SQLException("Invalid Connection in addRaceEvent method");
    java.util.Iterator it = values.iterator();
    CallableStatement cs = null;
    //Create an instance of the CallableStatement
    cs = conn.prepareCall("{call addEvent (?,?,?)}");
    for (int i = 1; i <= values.size(); i++)
      cs.setString(i, (String) it.next());
    //Call the inherited PreparedStatement.executeUpdate() method
    cs.executeUpdate();
    // return the connection to the pool
    conn.close();
  }//addRaceEvent
}