Jump to: navigation, search

Jetty/Howto/Configure JNDI Datasource

< Jetty‎ | Howto
Revision as of 09:55, 27 January 2012 by Tbecker.intalio.com (Talk | contribs) (BoneCP Connection Pool example added)

{{Jetty Howto | introduction = This document provides examples of configuring a JNDI datasource for various databases.

Idea.png
Tip:
Read the generic JNDI instructions for background information about configuring datasources.


These examples all correspond to a <resource-ref> in web.xml:

  <resource-ref>
     <description>My DataSource Reference</description>
     <res-ref-name>jdbc/DSTest</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
  </resource-ref>


These examples assume that all of the datasources are declared at the JVM scope, but you can, of course, use other scopes. You can configure all JNDI resources in a <code>jetty.xml</code> file or in a <code>WEB-INF/jetty-env.xml</code> file, or a context XML file. For more information, see [[Jetty/Feature/JNDI|JNDI]].

==Pooling DataSources==

Enables connection pooling. Connection pooling lets you reuse an existing connection instead of creating a new connection to the database.This is highly efficient in terms of memory allocation and speed of the request to the database. We highly recommend this option for production environments.

===BoneCP===

Connection pooling, available at http://jolbox.com/index.html?page=http://jolbox.com/download.html
All configuration options for BoneCP are described here: http://jolbox.com/bonecp/downloads/site/apidocs/com/jolbox/bonecp/BoneCPDataSource.html

<source lang="xml">
  <New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <Arg></Arg>
     <Arg>jdbc/DSTest</Arg>
     <Arg>
       <New class="com.jolbox.bonecp.BoneCPDataSource">
         <Set name="driverClass">com.mysql.jdbc.Driver</Set>
         <Set name="jdbcUrl">jdbc.url</Set>
         <Set name="username">jdbc.user</Set>
         <Set name="password">jdbc.pass</Set>
         <Set name="minConnectionsPerPartition">5</Set>
         <Set name="maxConnectionsPerPartition">50</Set>
         <Set name="acquireIncrement">5</Set>
         <Set name="idleConnectionTestPeriod">30</Set>
      </New>
    </Arg>
  </New>


===c3p0===

Connection pooling, available at http://repo1.maven.org/maven2/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jar

<source lang="xml">
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
      <new class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <set name="driverClass">org.some.Driver</set>
         <set name="jdbcUrl">jdbc.url</set>
         <set name="user">jdbc.user</set>
         <set name="password">jdbc.pass</set>
      </new>
     </arg>
    </new>


===dbcp===

Connection pooling, available at http://repo1.maven.org/maven2/commons-dbcp/commons-dbcp/1.2/commons-dbcp-1.2.jar

<source lang="xml">
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
         <new class="org.apache.commons.dbcp.BasicDataSource">
            <set name="driverClassName">org.some.Driver</set>
            <set name="url">jdbc.url</set>
            <set name="username">jdbc.user</set>
            <set name="password">jdbc.pass</set>
         </new>
     </arg>
    </new>


===Atomikos 3.3.2+===

Connection pooling + XA transactions.

<source lang="xml">
   <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
      <arg></arg>
      <arg>jdbc/DSTest</arg>
      <arg>
         <new class="com.atomikos.jdbc.AtomikosDataSourceBean">
            <set name="minPoolSize">2</set>
            <set name="maxPoolSize">50</set>
            <set name="xaDataSourceClassName">com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</set>
            <set name="UniqueResourceName">DSTest</set>
            <get name="xaProperties">
               <call name="setProperty">
                  <arg>url</arg>
                  <arg>jdbc:mysql://localhost:3306/databasename</arg>
               </call>
               <call name="setProperty">
                  <arg>user</arg>
                  <arg>some_username</arg>
               </call>
               <call name="setProperty">
                  <arg>password</arg>
                  <arg>some_password</arg>
               </call>
            </get>
         </new>
      </arg>
    </new>


==Non-pooling DataSources==

If you are deploying in a production environment, use the Pooling DataSources instead.

===MySQL===

Implements javax.sql.DataSource, javax.sql.ConnectionPoolDataSource

<source lang="xml"> 
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
        <new class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
           <set name="Url">jdbc:mysql://localhost:3306/databasename</set>
           <set name="User">user</set>
           <set name="Password">pass</set>
        </new>
     </arg>
    </new>


===SQL Server 2000===

Implements javax.sql.DataSource, javax.sql.ConnectionPoolDataSource

<source lang="xml">
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
        <new class="net.sourceforge.jtds.jdbcx.JtdsDataSource">
           <set name="User">user</set>
           <set name="Password">pass</set>
           <set name="DatabaseName">dbname</set>
           <set name="ServerName">localhost</set>
           <set name="PortNumber">1433</set>
        </new>
     </arg>
    </new>


===Oracle 9i/10g===

Implements javax.sql.DataSource, javax.sql.ConnectionPoolDataSource

<source lang="xml"> 
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
    <arg></arg>
    <arg>jdbc/DSTest</arg>
    <arg>
      <new class="oracle.jdbc.pool.OracleDataSource">
        <set name="DriverType">thin</set>
        <set name="URL">jdbc:oracle:thin:@fmsswdb1:10017:otcd</set>
        <set name="User">xxxx</set>
        <set name="Password">xxxx</set>
        <set name="connectionCachingEnabled">true</set>
        <set name="connectionCacheProperties">
          <new class="java.util.Properties">
            <call name="setProperty">
              <arg>MinLimit</arg>
              <arg>5</arg>
            </call>
            <!-- put the other properties in here too -->
          </new>
        </set>
      </new>
    </arg>
  </new>


For more information please see [http://download.oracle.com/docs/cd/B14117_01/java.101/b10979/conncache.htm#CDEBCBJC|this link].

===PostgreSQL===

Implements javax.sql.DataSource

<source lang="xml">
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
        <new class="org.postgresql.ds.PGSimpleDataSource">
           <set name="User">user</set>
           <set name="Password">pass</set>
           <set name="DatabaseName">dbname</set>
           <set name="ServerName">localhost</set>
           <set name="PortNumber">5432</set>
        </new>
     </arg>
  </new>


Implements javax.sql.ConnectionPoolDataSource

<source lang="xml"> 
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
        <new class="org.postgresql.ds.PGConnectionPoolDataSource">
           <set name="User">user</set>
           <set name="Password">pass</set>
           <set name="DatabaseName">dbname</set>
           <set name="ServerName">localhost</set>
           <set name="PortNumber">5432</set>
 
        </new>
     </arg>
  </new>


===Sybase===

Implements javax.sql.DataSource

<source lang="xml">
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
        <new class="com.sybase.jdbc2.jdbc.SybDataSource">
           <set name="DatabaseName">dbname</set>
           <set name="User">user</set>
           <set name="Password">pass</set>
           <set name="ServerName">servername</set>
           <set name="PortNumber">5000</set>
        </new>
     </arg>
  </new>


===DB2===

Implements javax.sql.DataSource

<source lang="xml"> 
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
        <new class="com.ibm.db2.jcc.DB2SimpleDataSource">
           <set name="DatabaseName">dbname</set>
           <set name="User">user</set>
           <set name="Password">pass</set>
           <set name="ServerName">servername</set>
           <set name="PortNumber">50000</set>
        </new>
     </arg>
  </new>


Implements javax.sql.ConnectionPoolDataSource

<source lang="xml">
  <new id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
     <arg></arg>
     <arg>jdbc/DSTest</arg>
     <arg>
        <new class="com.ibm.db2.jcc.DB2ConnectionPoolDataSource">
           <set name="DatabaseName">dbname</set>
           <set name="User">user</set>
           <set name="Password">pass</set>
           <set name="ServerName">servername</set>
           <set name="PortNumber">50000</set>
        </new>
     </arg>
  </new>

}}