Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Jetty/Howto/Configure JNDI Datasource
< Jetty | Howto
Revision as of 10: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.
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> }}