| <!DOCTYPE html> |
| <html lang="en"> |
| |
| <head> |
| <meta charset="UTF-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <title>Apache TomEE</title> |
| <meta name="description" |
| content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." /> |
| <meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" /> |
| <meta name="author" content="Luka Cvetinovic for Codrops" /> |
| <link rel="icon" href="../../favicon.ico"> |
| <link rel="icon" type="image/png" href="../../favicon.png"> |
| <meta name="msapplication-TileColor" content="#80287a"> |
| <meta name="theme-color" content="#80287a"> |
| <link rel="stylesheet" type="text/css" href="../../css/normalize.css"> |
| <link rel="stylesheet" type="text/css" href="../../css/bootstrap.css"> |
| <link rel="stylesheet" type="text/css" href="../../css/owl.css"> |
| <link rel="stylesheet" type="text/css" href="../../css/animate.css"> |
| <link rel="stylesheet" type="text/css" href="../../fonts/font-awesome-4.1.0/css/font-awesome.min.css"> |
| <link rel="stylesheet" type="text/css" href="../../fonts/eleganticons/et-icons.css"> |
| <link rel="stylesheet" type="text/css" href="../../css/jqtree.css"> |
| <link rel="stylesheet" type="text/css" href="../../css/idea.css"> |
| <link rel="stylesheet" type="text/css" href="../../css/cardio.css"> |
| |
| <script type="text/javascript"> |
| |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-2717626-1']); |
| _gaq.push(['_setDomainName', 'apache.org']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| |
| </script> |
| </head> |
| |
| <body> |
| <div class="preloader"> |
| <img src="../../img/loader.gif" alt="Preloader image"> |
| </div> |
| <nav class="navbar"> |
| <div class="container"> |
| <div class="row"> <div class="col-md-12"> |
| |
| <!-- Brand and toggle get grouped for better mobile display --> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <a class="navbar-brand" href="/" title="Apache TomEE"> |
| <span> |
| |
| |
| <img |
| src="../../img/apache_tomee-logo.svg" |
| onerror="this.src='../../img/apache_tomee-logo.jpg'" |
| height="50" |
| > |
| |
| |
| </span> |
| </a> |
| </div> |
| <!-- Collect the nav links, forms, and other content for toggling --> |
| <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> |
| <ul class="nav navbar-nav navbar-right main-nav"> |
| <li><a href="../../docs.html">Documentation</a></li> |
| <li><a href="../../community/index.html">Community</a></li> |
| <li><a href="../../security/security.html">Security</a></li> |
| <li><a class="btn btn-accent accent-orange no-shadow" href="../../download.html">Downloads</a></li> |
| </ul> |
| </div> |
| <!-- /.navbar-collapse --> |
| </div></div> |
| </div> |
| <!-- /.container-fluid --> |
| </nav> |
| |
| |
| <div id="main-block" class="container main-block"> |
| <div class="row title"> |
| <div class="col-md-12"> |
| <div class='page-header'> |
| |
| <h1>DataSource Configuration</h1> |
| </div> |
| </div> |
| </div> |
| <div class="row"> |
| |
| <div class="col-md-12"> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>A DataSource can be declared via xml in the |
| <code><tomee-home>/conf/tomee.xml</code> file or in a <code>WEB-INF/resources.xml</code> file |
| using a declaration like the following. All properties in the element |
| body are optional.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-xml" data-lang="xml"><Resource id="myDataSource" type="javax.sql.DataSource"> |
| accessToUnderlyingConnectionAllowed = false |
| alternateUsernameAllowed = false |
| connectionProperties = |
| defaultAutoCommit = true |
| defaultReadOnly = |
| definition = |
| ignoreDefaultValues = false |
| initialSize = 0 |
| jdbcDriver = org.hsqldb.jdbcDriver |
| jdbcUrl = jdbc:hsqldb:mem:hsqldb |
| jtaManaged = true |
| maxActive = 20 |
| maxIdle = 20 |
| maxOpenPreparedStatements = 0 |
| maxWaitTime = -1 millisecond |
| minEvictableIdleTime = 30 minutes |
| minIdle = 0 |
| numTestsPerEvictionRun = 3 |
| password = |
| passwordCipher = PlainText |
| poolPreparedStatements = false |
| serviceId = |
| testOnBorrow = true |
| testOnReturn = false |
| testWhileIdle = false |
| timeBetweenEvictionRuns = -1 millisecond |
| userName = sa |
| validationQuery = |
| </Resource></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Alternatively, a DataSource can be declared via properties in the |
| <code><tomee-home>/conf/system.properties</code> file or via Java VirtualMachine |
| <code>-D</code> properties. The properties can also be used when embedding TomEE |
| via the <code>javax.ejb.embeddable.EJBContainer</code> API or <code>InitialContext</code></p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-properties" data-lang="properties">myDataSource = new://Resource?type=javax.sql.DataSource |
| myDataSource.accessToUnderlyingConnectionAllowed = false |
| myDataSource.alternateUsernameAllowed = false |
| myDataSource.connectionProperties = |
| myDataSource.defaultAutoCommit = true |
| myDataSource.defaultReadOnly = |
| myDataSource.definition = |
| myDataSource.ignoreDefaultValues = false |
| myDataSource.initialSize = 0 |
| myDataSource.jdbcDriver = org.hsqldb.jdbcDriver |
| myDataSource.jdbcUrl = jdbc:hsqldb:mem:hsqldb |
| myDataSource.jtaManaged = true |
| myDataSource.maxActive = 20 |
| myDataSource.maxIdle = 20 |
| myDataSource.maxOpenPreparedStatements = 0 |
| myDataSource.maxWaitTime = -1 millisecond |
| myDataSource.minEvictableIdleTime = 30 minutes |
| myDataSource.minIdle = 0 |
| myDataSource.numTestsPerEvictionRun = 3 |
| myDataSource.password = |
| myDataSource.passwordCipher = PlainText |
| myDataSource.poolPreparedStatements = false |
| myDataSource.serviceId = |
| myDataSource.testOnBorrow = true |
| myDataSource.testOnReturn = false |
| myDataSource.testWhileIdle = false |
| myDataSource.timeBetweenEvictionRuns = -1 millisecond |
| myDataSource.userName = sa |
| myDataSource.validationQuery =</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Properties and xml can be mixed. Properties will override the xml |
| allowing for easy configuration change without the need for $\{} style |
| variable substitution. Properties are not case sensitive. If a property |
| is specified that is not supported by the declared DataSource a warning |
| will be logged. If a DataSource is needed by the application and one is |
| not declared, TomEE will create one dynamically using default settings. |
| Multiple DataSource declarations are allowed.</p> |
| </div> |
| <div class="paragraph"> |
| <p>See the <a href="common-datasource-configurations.html">Common DataSource |
| Configurations</a> page for examples of configuring datasources for Derby, |
| MySQL, Oracle and other common databases.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_supported_properties">Supported Properties</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Property</p> |
| </div> |
| <div class="paragraph"> |
| <p>Type</p> |
| </div> |
| <div class="paragraph"> |
| <p>Default</p> |
| </div> |
| <div class="paragraph"> |
| <p>Description</p> |
| </div> |
| <div class="paragraph"> |
| <p>accessToUnderlyingConnectionAllowed</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>false</p> |
| </div> |
| <div class="paragraph"> |
| <p>If true the raw physical connection to the database can be accessed</p> |
| </div> |
| <div class="paragraph"> |
| <p>alternateUsernameAllowed</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>false</p> |
| </div> |
| <div class="paragraph"> |
| <p>If true allow an alternate username and password to be specified on the |
| connection, rather than those specified in the DataSource definition..</p> |
| </div> |
| <div class="paragraph"> |
| <p>connectionProperties</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>The connection properties that will be sent to the JDBC driver when |
| establishing new connections</p> |
| </div> |
| <div class="paragraph"> |
| <p>defaultAutoCommit</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>true</p> |
| </div> |
| <div class="paragraph"> |
| <p>The default auto-commit state of new connections</p> |
| </div> |
| <div class="paragraph"> |
| <p>defaultReadOnly</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>The default read-only state of new connections If not set then the |
| setReadOnly method will not be called. (Some drivers don’t support read |
| only mode, ex: Informix)</p> |
| </div> |
| <div class="paragraph"> |
| <p>definition</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>ignoreDefaultValues</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>false</p> |
| </div> |
| <div class="paragraph"> |
| <p>use only all set values in this config will need a lot of properties but |
| allow to not set some values</p> |
| </div> |
| <div class="paragraph"> |
| <p>initialSize</p> |
| </div> |
| <div class="paragraph"> |
| <p>int</p> |
| </div> |
| <div class="paragraph"> |
| <p>0</p> |
| </div> |
| <div class="paragraph"> |
| <p>The size to reach when creating the datasource.</p> |
| </div> |
| <div class="paragraph"> |
| <p>jdbcDriver</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>org.hsqldb.jdbcDriver</p> |
| </div> |
| <div class="paragraph"> |
| <p>Driver class name</p> |
| </div> |
| <div class="paragraph"> |
| <p>jdbcUrl</p> |
| </div> |
| <div class="paragraph"> |
| <p>java.net.URI</p> |
| </div> |
| <div class="paragraph"> |
| <p>jdbc:hsqldb:mem:hsqldb</p> |
| </div> |
| <div class="paragraph"> |
| <p>Url for creating connections</p> |
| </div> |
| <div class="paragraph"> |
| <p>jtaManaged</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>true</p> |
| </div> |
| <div class="paragraph"> |
| <p>Determines wether or not this data source should be JTA managed or user |
| managed.</p> |
| </div> |
| <div class="paragraph"> |
| <p>maxActive</p> |
| </div> |
| <div class="paragraph"> |
| <p>int</p> |
| </div> |
| <div class="paragraph"> |
| <p>20</p> |
| </div> |
| <div class="paragraph"> |
| <p>The maximum number of active connections that can be allocated from this |
| pool at the same time, or a negative number for no limit. N.B. When |
| using dbcp2 with TomEE 7 ("DataSourceCreator dbcp"), "MaxTotal" should |
| be used as opposed to "MaxActive".</p> |
| </div> |
| <div class="paragraph"> |
| <p>maxIdle</p> |
| </div> |
| <div class="paragraph"> |
| <p>int</p> |
| </div> |
| <div class="paragraph"> |
| <p>20</p> |
| </div> |
| <div class="paragraph"> |
| <p>The maximum number of connections that can remain idle in the pool, |
| without extra ones being released, or a negative number for no limit.</p> |
| </div> |
| <div class="paragraph"> |
| <p>maxOpenPreparedStatements</p> |
| </div> |
| <div class="paragraph"> |
| <p>int</p> |
| </div> |
| <div class="paragraph"> |
| <p>0</p> |
| </div> |
| <div class="paragraph"> |
| <p>The maximum number of open statements that can be allocated from the |
| statement pool at the same time, or zero for no limit.</p> |
| </div> |
| <div class="paragraph"> |
| <p>maxWaitTime</p> |
| </div> |
| <div class="paragraph"> |
| <p>time</p> |
| </div> |
| <div class="paragraph"> |
| <p>-1Â millisecond</p> |
| </div> |
| <div class="paragraph"> |
| <p>The maximum number of time that the pool will wait (when there are no |
| available connections) for a connection to be returned before throwing |
| an exception, or -1 to wait indefinitely.</p> |
| </div> |
| <div class="paragraph"> |
| <p>minEvictableIdleTime</p> |
| </div> |
| <div class="paragraph"> |
| <p>time</p> |
| </div> |
| <div class="paragraph"> |
| <p>30Â minutes</p> |
| </div> |
| <div class="paragraph"> |
| <p>The minimum amount of time a connection may sit idle in the pool before |
| it is eligable for eviction by the idle connection evictor (if any).</p> |
| </div> |
| <div class="paragraph"> |
| <p>minIdle</p> |
| </div> |
| <div class="paragraph"> |
| <p>int</p> |
| </div> |
| <div class="paragraph"> |
| <p>0</p> |
| </div> |
| <div class="paragraph"> |
| <p>The minimum number of connections that can remain idle in the pool, |
| without extra ones being created, or zero to create none.</p> |
| </div> |
| <div class="paragraph"> |
| <p>numTestsPerEvictionRun</p> |
| </div> |
| <div class="paragraph"> |
| <p>int</p> |
| </div> |
| <div class="paragraph"> |
| <p>3</p> |
| </div> |
| <div class="paragraph"> |
| <p>The number of connectionss to examine during each run of the idle |
| connection evictor thread (if any).</p> |
| </div> |
| <div class="paragraph"> |
| <p>password</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>Default password</p> |
| </div> |
| <div class="paragraph"> |
| <p>passwordCipher</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>PlainText</p> |
| </div> |
| <div class="paragraph"> |
| <p>poolPreparedStatements</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>false</p> |
| </div> |
| <div class="paragraph"> |
| <p>If true, a statement pool is created for each Connection and |
| PreparedStatements created by one of the following methods are pooled:</p> |
| </div> |
| <div class="paragraph"> |
| <p>serviceId</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>testOnBorrow</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>true</p> |
| </div> |
| <div class="paragraph"> |
| <p>If true connections will be validated before being returned from the |
| pool. If the validation fails, the connection is destroyed, and a new |
| conection will be retrieved from the pool (and validated).</p> |
| </div> |
| <div class="paragraph"> |
| <p>testOnReturn</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>false</p> |
| </div> |
| <div class="paragraph"> |
| <p>If true connections will be validated before being returned to the pool. |
| If the validation fails, the connection is destroyed instead of being |
| returned to the pool.</p> |
| </div> |
| <div class="paragraph"> |
| <p>testWhileIdle</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>false</p> |
| </div> |
| <div class="paragraph"> |
| <p>If true connections will be validated by the idle connection evictor (if |
| any). If the validation fails, the connection is destroyed and removed |
| from the pool</p> |
| </div> |
| <div class="paragraph"> |
| <p>timeBetweenEvictionRuns</p> |
| </div> |
| <div class="paragraph"> |
| <p>time</p> |
| </div> |
| <div class="paragraph"> |
| <p>-1Â millisecond</p> |
| </div> |
| <div class="paragraph"> |
| <p>The number of milliseconds to sleep between runs of the idle connection |
| evictor thread. When set to a negative number, no idle connection |
| evictor thread will be run.</p> |
| </div> |
| <div class="paragraph"> |
| <p>userName</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>sa</p> |
| </div> |
| <div class="paragraph"> |
| <p>Default user name</p> |
| </div> |
| <div class="paragraph"> |
| <p>validationQuery</p> |
| </div> |
| <div class="paragraph"> |
| <p>String</p> |
| </div> |
| <div class="paragraph"> |
| <p>The SQL query that will be used to validate connections from this pool |
| before returning them to the caller. If specified, this query MUST be an |
| SQL SELECT statement that returns at least one row.</p> |
| </div> |
| <div class="paragraph"> |
| <p>LogSql</p> |
| </div> |
| <div class="paragraph"> |
| <p>boolean</p> |
| </div> |
| <div class="paragraph"> |
| <p>false</p> |
| </div> |
| <div class="paragraph"> |
| <p>Wether SQL queries should be logged or not</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_accesstounderlyingconnectionallowed">accessToUnderlyingConnectionAllowed</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>If true the raw physical connection to the database can be accessed |
| using the following construct:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">Connection conn = ds.getConnection(); |
| Connection rawConn = ((DelegatingConnection) conn).getInnermostDelegate(); |
| ... |
| conn.close()</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Default is false, because misbehaving programs can do harmfull things to |
| the raw connection shuch as closing the raw connection or continuing to |
| use the raw connection after it has been assigned to another logical |
| connection. Be careful and only use when you need direct access to |
| driver specific extensions.</p> |
| </div> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-note" title="Note"></i> |
| </td> |
| <td class="content"> |
| Do NOT close the underlying connection, only the original logical |
| connection wrapper. |
| </td> |
| </tr> |
| </table> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_connectionproperties">connectionProperties</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The connection properties that will be sent to the JDBC driver when |
| establishing new connections</p> |
| </div> |
| <div class="paragraph"> |
| <p>Format of the string must be [propertyName=property;]*</p> |
| </div> |
| <div class="paragraph"> |
| <p>NOTE - The "user" and "password" properties will be passed explicitly, |
| so they do not need to be included here.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_transactionisolation">TransactionIsolation</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The default TransactionIsolation state of new connections.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If not set then the <code>setTransactionIsolation</code> method will not be called. |
| The allowed values for this property are:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>NONE</code></p> |
| </li> |
| <li> |
| <p><code>READ_COMMITTED</code></p> |
| </li> |
| <li> |
| <p><code>READ_UNCOMMITTED</code></p> |
| </li> |
| <li> |
| <p><code>REPEATABLE_READ</code></p> |
| </li> |
| <li> |
| <p><code>SERIALIZABLE</code></p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Note: Most JDBC drivers do not support all isolation levels |
| DefaultTransactionIsolation</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_initialsize">initialSize</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The initial size to initialize the pool of connections.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_jtamanaged">jtaManaged</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Determines wether or not this data source should be JTA managed or user |
| managed.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If set to 'true' it will automatically be enrolled in any ongoing |
| transactions. Calling begin/commit/rollback or setAutoCommit on the |
| datasource or connection will not be allowed. If you need to perform |
| these functions yourself, set <code>JtaManaged</code> to <code>false</code></p> |
| </div> |
| <div class="paragraph"> |
| <p>In terms of JPA persistence.xml:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>JtaManaged=true</code> can be used as a 'jta-data-source'</p> |
| </li> |
| <li> |
| <p><code>JtaManaged=false</code> can be used as a 'non-jta-data-source'</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_maxopenpreparedstatements">maxOpenPreparedStatements</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The maximum number of open statements that can be allocated from the |
| statement pool at the same time, or zero for no limit.</p> |
| </div> |
| <div class="paragraph"> |
| <p>NOTE - Some drivers have limits on the number of open statements, so |
| make sure there are some resources left for the other (non-prepared) |
| statements.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_poolpreparedstatements">poolPreparedStatements</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>If true, a statement pool is created for each Connection and |
| PreparedStatements created by one of the following methods are pooled:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">public PreparedStatement prepareStatement(String sql); |
| public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)</code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_testonborrow">testOnBorrow</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>If true connections will be validated before being returned from the |
| pool. If the validation fails, the connection is destroyed, and a new |
| conection will be retrieved from the pool (and validated).</p> |
| </div> |
| <div class="paragraph"> |
| <p>NOTE - for a true value to have any effect, the ValidationQuery |
| parameter must be set.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_testonreturn">testOnReturn</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>If true connections will be validated before being returned to the pool. |
| If the validation fails, the connection is destroyed instead of being |
| returned to the pool.</p> |
| </div> |
| <div class="paragraph"> |
| <p>NOTE - for a true value to have any effect, the ValidationQuery |
| parameter must be set.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_testwhileidle">testWhileIdle</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>If true connections will be validated by the idle connection evictor (if |
| any). If the validation fails, the connection is destroyed and removed |
| from the pool</p> |
| </div> |
| <div class="paragraph"> |
| <p>NOTE - for a true value to have any effect, the |
| timeBetweenEvictionRunsMillis property must be a positive number and the |
| ValidationQuery parameter must be set.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_xadatasource">XADataSource</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>There are several ways to configure a XADataSource. Depending the |
| underlying datasource (Oracle, MySQL one or the other solution can be |
| more adapted.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This part deals with <code>JtaManaged</code> XaDataSource since a not managed |
| XaDataSource can be defined as a standard resource using <code>class-name</code>.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="_single_definition">Single definition</h3> |
| <div class="paragraph"> |
| <p>First solution is to define as <code>JdbcDriver</code> an XADataSource:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-xml" data-lang="xml"><Resource id="myXaDs" type="DataSource"> |
| JdbcDriver = org.foo.MyXaDataSource |
| |
| myXaProperty = value |
| |
| myPoolProperty = 10 |
| </Resource></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>This solution merges properties for the XaDataSource and the pool |
| (tomcat-jdbc for TomEE, dbcp for OpenEJB by default but still |
| configurable with DataSourceCreator).</p> |
| </div> |
| <div class="paragraph"> |
| <p>Note: in this case for Oracle for instance you’ll define UserName for |
| the pool and User for the datasource which can look weird if you don’t |
| know properties are used for 2 instances (pool and datasource).</p> |
| </div> |
| <div class="paragraph"> |
| <p>Note: this solution uses the same logic than <code>@DataSourceDefinition</code> |
| factory mecanism.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_two_resources_definition">Two resources definition</h3> |
| <div class="paragraph"> |
| <p>An alternative is to define a resource for the XaDataSource:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-xml" data-lang="xml"><Resource id="myXa" class-name="org.foo.MyXaDataSource"> |
| myXaProperty = value |
| </Resource></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>And then wrap it in the pool:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-xml" data-lang="xml"><Resource id="myXaDs" type="DataSource"> |
| DataSourceCreator = [dbcp|dbcp-alternative] |
| myPoolProperty = 10 |
| </Resource></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Note: <code>dbcp</code> is more adapted than <code>dbcp-alternative</code> in most of the case |
| because it is reusing direct dbcp JTA management.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_known_issues">Known issues</h3> |
| <div class="paragraph"> |
| <p>For TomEE 1.7.0/1.7.1 you can need to add the property:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-properties" data-lang="properties"> openejb.datasource.pool = true</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>in resource properties to ensure the resource is pooled.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_details_about_datasource_and_their_factories_advanced_configuration">Details about DataSource and their factories (advanced configuration)</h3> |
| <div class="paragraph"> |
| <p><a href="datasource-configuration-by-creator.html">Configuration by creator</a></p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| </div> |
| </div> |
| <div style="margin-bottom: 30px;"></div> |
| <footer> |
| <div class="container"> |
| <div class="row"> |
| <div class="col-sm-6 text-center-mobile"> |
| <h3 class="white">Be simple. Be certified. Be Tomcat.</h3> |
| <h5 class="light regular light-white">"A good application in a good server"</h5> |
| <ul class="social-footer"> |
| <li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li> |
| <li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li> |
| </ul> |
| </div> |
| <div class="col-sm-6 text-center-mobile"> |
| <div class="row opening-hours"> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../latest/docs/" class="white">Documentation</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li> |
| <li><a href="../../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li> |
| <li><a href="../../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li> |
| <li><a href="../../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../latest/examples/" class="white">Examples</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li> |
| <li><a href="../../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li> |
| <li><a href="../../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li> |
| <li><a href="../../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../community/index.html" class="white">Community</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../community/contributors.html" class="regular light-white">Contributors</a></li> |
| <li><a href="../../community/social.html" class="regular light-white">Social</a></li> |
| <li><a href="../../community/sources.html" class="regular light-white">Sources</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../security/index.html" class="white">Security</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="http://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li> |
| <li><a href="http://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li> |
| <li><a href="http://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="row bottom-footer text-center-mobile"> |
| <div class="col-sm-12 light-white"> |
| <p>Copyright © 1999-2021 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> |
| </div> |
| </div> |
| </div> |
| </footer> |
| <!-- Holder for mobile navigation --> |
| <div class="mobile-nav"> |
| <ul> |
| <li><a hef="../../latest/docs/admin/index.html">Administrators</a> |
| <li><a hef="../../latest/docs/developer/index.html">Developers</a> |
| <li><a hef="../../latest/docs/advanced/index.html">Advanced</a> |
| <li><a hef="../../community/index.html">Community</a> |
| </ul> |
| <a href="#" class="close-link"><i class="arrow_up"></i></a> |
| </div> |
| <!-- Scripts --> |
| <script src="../../js/jquery-1.11.1.min.js"></script> |
| <script src="../../js/owl.carousel.min.js"></script> |
| <script src="../../js/bootstrap.min.js"></script> |
| <script src="../../js/wow.min.js"></script> |
| <script src="../../js/typewriter.js"></script> |
| <script src="../../js/jquery.onepagenav.js"></script> |
| <script src="../../js/tree.jquery.js"></script> |
| <script src="../../js/highlight.pack.js"></script> |
| <script src="../../js/main.js"></script> |
| </body> |
| |
| </html> |
| |