title: Connection Pooling using Jetty, in Oracle
body: <p>I am trying to implement the concept of <code>ConnectionPooling</code> in <code>Oracle</code> using <code>Jetty</code> server. I have tried the following that I saw on a tutorial. It is working if I deploy using <code>Tomcat</code> server, but <code>Jetty</code> seems to be giving me an unusual <code>error</code>. Details are below -</p>
  
  <p>I have a class called <code>TestServlet.java</code> defined as - </p>
  
  <pre><code>import java.io.IOException;
  import java.sql.*;
  import javax.naming.*;
  import javax.servlet.*;
  import javax.servlet.annotation.WebServlet;
  import javax.servlet.http.*;
  import javax.sql.DataSource;
  
  
  @SuppressWarnings("serial")
  @WebServlet("/TestServlet")
  public class TestServlet extends HttpServlet {
  public TestServlet() throws ServletException{
      System.out.println("Constructor");
      init();
  }
  public DataSource dataSource;
  private Connection con;
  private Statement statement;
  
  public void init() throws ServletException {
      System.out.println("inside init method");
      try {
          // Get DataSource
          Context initContext  = new InitialContext();
          System.out.println("Before envcontext");
          Context envContext  = (Context)initContext.lookup("java:comp/env");
          System.out.println("After envcontext");
          dataSource = (DataSource)envContext.lookup("jdbc/DSTest");
          System.out.println(dataSource.toString());
      } catch (NamingException e) {
          System.out.println("Exception in try");
          e.printStackTrace();
      }
  }
  
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
          throws ServletException, IOException {
      System.out.println("Request: "+req+"\tResponse: "+resp);
       int i=0;
      ResultSet resultSet = null;
      try {
          // Get Connection and Statement
          con = dataSource.getConnection();
          statement = con.createStatement();
          String query = "SELECT * FROM USER";
          resultSet = statement.executeQuery(query);
          while (resultSet.next()) {
              ++i;
              System.out.println(i+":\nID:"+resultSet.getString("ID") +"\nEmail:"+ resultSet.getString("UEMAIL") +"\nPassword:" + resultSet.getString("PASSWORD")+"\nFlag:"+resultSet.getShort("FLAG")
                      +"\n");
  
          }
      } catch (SQLException e) {
          System.out.println("EXCEPTIOn");
          e.printStackTrace();
      }finally {
          try { if(null!=resultSet)resultSet.close();} catch (SQLException e) 
          {e.printStackTrace();System.out.println("1");}
          try { if(null!=statement)statement.close();} catch (SQLException e) 
          {e.printStackTrace();System.out.println("2");}
          try { if(null!=con)con.close();} catch (SQLException e) 
          {e.printStackTrace();System.out.println("3");}
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>And my <code>Jetty-web.xml</code> is as - </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;Configure class="org.eclipse.jetty.webapp.WebAppContext"&gt;
  &lt;New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource"&gt;
   &lt;Arg&gt;java:comp/env&lt;/Arg&gt;
   &lt;Arg&gt;jdbc/DSTest&lt;/Arg&gt;
   &lt;Arg&gt;
       &lt;New class="org.apache.commons.dbcp.BasicDataSource"&gt;
          &lt;Set name="driverClassName"&gt;oracle.jdbc.OracleDriver&lt;/Set&gt;
          &lt;Set  name="url"&gt;ConnectionUrl&lt;/Set&gt;
          &lt;Set name="username"&gt;app_user&lt;/Set&gt;
          &lt;Set name="password"&gt;abcd&lt;/Set&gt;
       &lt;/New&gt;
   &lt;/Arg&gt;
  &lt;/New&gt;
  &lt;/Configure&gt;
  </code></pre>
  
  <p>When I run the <code>servlet</code> class I get an error that says - </p>
  
  <pre><code>java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
  at java.lang.Class.getDeclaredConstructors0(Native Method)
  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658)
  at java.lang.Class.getConstructors(Class.java:1638)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317)
  at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276)
  at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100)
  at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427)
  at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207)
  at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
  at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89)
  at org.eclipse.jetty.server.Server.doStart(Server.java:262)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at runjettyrun.Bootstrap.main(Bootstrap.java:80)
  Caused by: 
  java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
  at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
  at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:415)
  at runjettyrun.ProjectClassLoader.loadClass(ProjectClassLoader.java:92)
  at java.lang.Class.getDeclaredConstructors0(Native Method)
  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658)
  at java.lang.Class.getConstructors(Class.java:1638)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317)
  at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276)
  at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100)
  at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427)
  at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207)
  at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
  at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89)
  at org.eclipse.jetty.server.Server.doStart(Server.java:262)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at runjettyrun.Bootstrap.main(Bootstrap.java:80)
  2015-10-30 14:22:51.172:INFO:oejs.AbstractConnector:Started     SelectChannelConnector@0.0.0.0:8081 STARTING
  2015-10-30 14:22:51.172:WARN:oejuc.AbstractLifeCycle:FAILED   org.eclipse.jetty.server.Server@7857fe2: java.lang.NoClassDefFoundError:   org/apache/commons/pool/impl/GenericObjectPool
  java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
  at java.lang.Class.getDeclaredConstructors0(Native Method)
  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658)
  at java.lang.Class.getConstructors(Class.java:1638)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317)
  at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276)
  at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100)
  at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427)
  at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207)
  at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
  at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89)
  at org.eclipse.jetty.server.Server.doStart(Server.java:262)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at runjettyrun.Bootstrap.main(Bootstrap.java:80)
  Caused by: 
  java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
  at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
  at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:415)
  at runjettyrun.ProjectClassLoader.loadClass(ProjectClassLoader.java:92)
  at java.lang.Class.getDeclaredConstructors0(Native Method)
  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658)
  at java.lang.Class.getConstructors(Class.java:1638)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317)
  at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276)
  at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100)
  at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427)
  at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207)
  at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
  at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89)
  at org.eclipse.jetty.server.Server.doStart(Server.java:262)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at runjettyrun.Bootstrap.main(Bootstrap.java:80)
  Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
  at java.lang.Class.getDeclaredConstructors0(Native Method)
  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658)
  at java.lang.Class.getConstructors(Class.java:1638)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383)
  at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317)
  at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276)
  at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100)
  at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427)
  at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207)
  at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
  at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89)
  at org.eclipse.jetty.server.Server.doStart(Server.java:262)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
  at runjettyrun.Bootstrap.main(Bootstrap.java:80)
  Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
  at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
  at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:415)
  at runjettyrun.ProjectClassLoader.loadClass(ProjectClassLoader.java:92)
  ... 20 more
  </code></pre>
  
  <p>I have added the <code>commons-dbcp-1.4.jar</code> to my <code>WEB-INF/lib</code> folder in eclipse after looking at other stackoverflow threads. Even after doing that, I am getting the same error when I deploy on <code>Jetty</code>.</p>
  
  <p>I am using <code>jetty</code> server version 8 integrated with <code>eclipse luna</code> 4.4.1.</p>
  
  <p>Any help much appreciated. </p>