| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| |
| <meta charset="UTF-8"> |
| <title>DataSource Configuration</title> |
| <meta name="description" content="Apache TomEE"> |
| <meta name="author" content="Apache TomEE"> |
| <meta name="google-translate-customization" content="f36a520c08f4c9-0a04e86a9c075ce9-g265f3196f697cf8f-10"> |
| <meta http-equiv="Pragma" content="no-cache"> |
| <meta http-equiv="Expires" content="0"> |
| <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, max-age=0"> |
| |
| <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> |
| <!--[if lt IE 9]> |
| <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
| <![endif]--> |
| |
| <!-- Le styles --> |
| <link href="./resources/css/bootstrap.css" rel="stylesheet"> |
| <link href="./resources/css/prettify.css" rel="stylesheet"> |
| <!--link href="./resources/css/bootstrap-mods.css" rel="stylesheet"--> |
| <link href="./resources/css/main.css" rel="stylesheet"> |
| <link href="./resources/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet"> |
| |
| <script type="text/javascript"> |
| var t = encodeURIComponent(document.title.replace(/^\s+|\s+$/g,"")); |
| var u = encodeURIComponent(""+document.URL); |
| |
| function fbshare () { |
| window.open( |
| "http://www.facebook.com/sharer/sharer.php?u="+u, |
| 'Share on Facebook', |
| 'width=640,height=426'); |
| }; |
| function gpshare () { |
| window.open( |
| "https://plus.google.com/share?url="+u, |
| 'Share on Google+', |
| 'width=584,height=385'); |
| }; |
| function twshare () { |
| window.open( |
| "https://twitter.com/intent/tweet?url="+u+"&text="+t, |
| 'Share on Twitter', |
| 'width=800,height=526'); |
| }; |
| function pinshare () { |
| window.open("//www.pinterest.com/pin/create/button/?url="+u+"&media=http%3A%2F%2Ftomee.apache.org%2Fresources%2Fimages%2Ffeather-logo.png&description="+t, |
| 'Share on Pinterest', |
| 'width=800,height=526'); |
| }; |
| </script> |
| |
| <!-- Le fav and touch icons --> |
| <link rel="shortcut icon" href="./favicon.ico"> |
| <link rel="apple-touch-icon" href="./resources/images/apple-touch-icon.png"> |
| <link rel="apple-touch-icon" sizes="72x72" href="./resources/images/apple-touch-icon-72x72.png"> |
| <link rel="apple-touch-icon" sizes="114x114" href="./resources/images/apple-touch-icon-114x114.png"> |
| |
| <script src="./resources/js/prettify.js" type="text/javascript"></script> |
| <script src="./resources/js/jquery-latest.js"></script> |
| <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script> |
| <script src="./resources/js/common.js"></script> |
| <script src="./resources/js/prettyprint.js"></script> |
| <!--script src="//assets.pinterest.com/js/pinit.js" type="text/javascript" async></script//--> |
| |
| <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="topbar" data-dropdown="dropdown"> |
| <div class="fill"> |
| <div class="container"> |
| <a class="brand" href="./index.html">Apache TomEE</a> |
| <ul class="nav"> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#"> |
| Apache |
| <b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <!-- <li><a href="./misc/whoweare.html">Who we are?</a></li> --> |
| <!-- <li><a href="./misc/heritage.html">Heritage</a></li> --> |
| <li><a href="http://www.apache.org">Apache Home</a></li> |
| <!-- <li><a href="./misc/resources.html">Resources</a></li> --> |
| <li><a href="./misc/contact.html">Contact</a></li> |
| <li><a href="./misc/legal.html">Legal</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| <li class="divider"/> |
| <li><a href="http://www.apache.org/security">Security</a></li> |
| </ul> |
| </li> |
| <li><a href="./index.html">Home</a></li> |
| <li><a href="./downloads.html">Downloads</a></li> |
| <li><a href="./documentation.html">Documentation</a></li> |
| <li><a href="./examples-trunk/index.html">Examples</a></li> |
| <li><a href="./support.html">Support</a></li> |
| <li><a href="./contribute.html">Contribute</a></li> |
| <li><a href="./security/index.html">Security</a></li> |
| </ul> |
| |
| <!-- Google CSE Search Box Begins --> |
| <FORM class="pull-right" id="searchbox_010475492895890475512:_t4iqjrgx90" action="http://www.google.com/cse"> |
| <INPUT type="hidden" name="cx" value="010475492895890475512:_t4iqjrgx90"> |
| <INPUT type="hidden" name="cof" value="FORID:0"> |
| <INPUT size="18" width="130" style="width:130px" name="q" type="text" placeholder="Search"> |
| </FORM> |
| <!--<SCRIPT type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>--> |
| <!-- Google CSE Search Box Ends --> |
| </div> |
| </div> |
| </div> |
| |
| <div class="container"> |
| |
| |
| <div class="page-header"> |
| <small><a href="./index.html">Home</a></small><br> |
| <h1>DataSource Configuration |
| |
| <div style="float: right; position: relative; bottom: -10px; "> |
| <a onclick="javascript:gpshare()" class="gp-share sprite" title="Share on Google+">share [gp]</a> |
| <a onclick="javascript:fbshare()" class="fb-share sprite" title="Share on Facebook">share [fb]</a> |
| <a onclick="javascript:twshare()" class="tw-share sprite" title="Share on Twitter">share [tw]</a> |
| <a onclick="javascript:pinshare()" class="pin-share sprite" title="Share on Pinterest">share [pin]</a> |
| <a data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a> |
| </div> |
| </h1> |
| </div> |
| |
| <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> |
| |
| <pre><code><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> |
| |
| <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> |
| |
| <pre><code>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> |
| |
| <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> |
| |
| <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> |
| |
| <h1>Supported Properties</h1> |
| |
| <table> |
| <tr> |
| <th>Property</th> |
| <th>Type</th> |
| <th>Default</th> |
| <th>Description</th> |
| </tr> |
| <tr> |
| <td><a href="#accessToUnderlyingConnectionAllowed">accessToUnderlyingConnectionAllowed</a></td> |
| <td>boolean</td> |
| <td>false</td> |
| <td> |
| If true the raw physical connection to the database can be |
| accessed |
| </td> |
| </tr> |
| </tr> |
| <tr> |
| <td><a href="#alternateUsernameAllowed">alternateUsernameAllowed</a></td> |
| <td>boolean</td> |
| <td>false</td> |
| <td> |
| If true allow an alternate username and password to be specified on the connection, rather than those specified in the DataSource definition.. |
| </td> |
| </tr> |
| <tr> |
| <td><a href="#connectionProperties">connectionProperties</a></td> |
| <td>String</td> |
| <td></td> |
| <td> |
| The connection properties that will be sent to the JDBC |
| driver when establishing new connections |
| </td> |
| </tr> |
| <tr> |
| <td>defaultAutoCommit</td> |
| <td>boolean</td> |
| <td>true</td> |
| <td> |
| The default auto-commit state of new connections |
| </td> |
| </tr> |
| <tr> |
| <td>defaultReadOnly</td> |
| <td>String</td> |
| <td></td> |
| <td> |
| 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) |
| </td> |
| </tr> |
| <tr> |
| <td>definition</td> |
| <td>String</td> |
| <td></td> |
| <td> |
| |
| </td> |
| </tr> |
| <tr> |
| <td>ignoreDefaultValues</td> |
| <td>boolean</td> |
| <td>false</td> |
| <td> |
| use only all set values in this config |
| will need a lot of properties but allow to not set some values |
| </td> |
| </tr> |
| <tr> |
| <td><a href="#initialSize">initialSize</a></td> |
| <td>int</td> |
| <td>0</td> |
| <td> |
| The size to reach when creating the datasource. |
| </td> |
| </tr> |
| <tr> |
| <td>jdbcDriver</td> |
| <td>String</td> |
| <td>org.hsqldb.jdbcDriver</td> |
| <td> |
| Driver class name |
| </td> |
| </tr> |
| <tr> |
| <td>jdbcUrl</td> |
| <td>java.net.URI</td> |
| <td>jdbc:hsqldb:mem:hsqldb</td> |
| <td> |
| Url for creating connections |
| </td> |
| </tr> |
| <tr> |
| <td><a href="#jtaManaged">jtaManaged</a></td> |
| <td>boolean</td> |
| <td>true</td> |
| <td> |
| Determines wether or not this data source should be JTA managed |
| or user managed. |
| </td> |
| </tr> |
| <tr> |
| <td>maxActive</td> |
| <td>int</td> |
| <td>20</td> |
| <td> |
| 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". |
| </td> |
| </tr> |
| <tr> |
| <td>maxIdle</td> |
| <td>int</td> |
| <td>20</td> |
| <td> |
| The maximum number of connections that can remain idle in |
| the pool, without extra ones being released, or a negative |
| number for no limit. |
| </td> |
| </tr> |
| <tr> |
| <td><a href="#maxOpenPreparedStatements">maxOpenPreparedStatements</a></td> |
| <td>int</td> |
| <td>0</td> |
| <td> |
| The maximum number of open statements that can be allocated |
| from the statement pool at the same time, or zero for no |
| limit. |
| </td> |
| </tr> |
| <tr> |
| <td>maxWaitTime</td> |
| <td><a href="configuring-durations.html">time</a></td> |
| <td>-1 millisecond</td> |
| <td> |
| 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. |
| </td> |
| </tr> |
| <tr> |
| <td>minEvictableIdleTime</td> |
| <td><a href="configuring-durations.html">time</a></td> |
| <td>30 minutes</td> |
| <td> |
| 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). |
| </td> |
| </tr> |
| <tr> |
| <td>minIdle</td> |
| <td>int</td> |
| <td>0</td> |
| <td> |
| The minimum number of connections that can remain idle in |
| the pool, without extra ones being created, or zero to |
| create none. |
| </td> |
| </tr> |
| <tr> |
| <td>numTestsPerEvictionRun</td> |
| <td>int</td> |
| <td>3</td> |
| <td> |
| The number of connectionss to examine during each run of the |
| idle connection evictor thread (if any). |
| </td> |
| </tr> |
| <tr> |
| <td>password</td> |
| <td>String</td> |
| <td></td> |
| <td> |
| Default password |
| </td> |
| </tr> |
| <tr> |
| <td>passwordCipher</td> |
| <td>String</td> |
| <td>PlainText</td> |
| <td> |
| |
| </td> |
| </tr> |
| <tr> |
| <td><a href="#poolPreparedStatements">poolPreparedStatements</a></td> |
| <td>boolean</td> |
| <td>false</td> |
| <td> |
| If true, a statement pool is created for each Connection and |
| PreparedStatements created by one of the following methods are |
| pooled: |
| </td> |
| </tr> |
| <tr> |
| <td>serviceId</td> |
| <td>String</td> |
| <td></td> |
| <td> |
| |
| </td> |
| </tr> |
| <tr> |
| <td><a href="#testOnBorrow">testOnBorrow</a></td> |
| <td>boolean</td> |
| <td>true</td> |
| <td> |
| 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). |
| </td> |
| </tr> |
| <tr> |
| <td><a href="#testOnReturn">testOnReturn</a></td> |
| <td>boolean</td> |
| <td>false</td> |
| <td> |
| 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. |
| </td> |
| </tr> |
| <tr> |
| <td><a href="#testWhileIdle">testWhileIdle</a></td> |
| <td>boolean</td> |
| <td>false</td> |
| <td> |
| 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 |
| </td> |
| </tr> |
| <tr> |
| <td>timeBetweenEvictionRuns</td> |
| <td><a href="configuring-durations.html">time</a></td> |
| <td>-1 millisecond</td> |
| <td> |
| 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. |
| </td> |
| </tr> |
| <tr> |
| <td>userName</td> |
| <td>String</td> |
| <td>sa</td> |
| <td> |
| Default user name |
| </td> |
| </tr> |
| <tr> |
| <td>validationQuery</td> |
| <td>String</td> |
| <td></td> |
| <td> |
| 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. |
| </td> |
| </tr> |
| <tr> |
| <td>LogSql</td> |
| <td>boolean</td> |
| <td>false</td> |
| <td>Wether SQL queries should be logged or not</td> |
| </tr> |
| </table> |
| |
| <p><a name="accessToUnderlyingConnectionAllowed"></a></p> |
| |
| <h2>accessToUnderlyingConnectionAllowed</h2> |
| |
| <p>If true the raw physical connection to the database can be |
| accessed using the following construct:</p> |
| |
| <pre><code>Connection conn = ds.getConnection(); |
| Connection rawConn = ((DelegatingConnection) conn).getInnermostDelegate(); |
| ... |
| conn.close() |
| </code></pre> |
| |
| <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> |
| |
| <p>NOTE: Do NOT close the underlying connection, only the |
| original logical connection wrapper.</p> |
| |
| <p><a name="connectionProperties"></a></p> |
| |
| <h2>connectionProperties</h2> |
| |
| <p>The connection properties that will be sent to the JDBC |
| driver when establishing new connections</p> |
| |
| <p>Format of the string must be [propertyName=property;]*</p> |
| |
| <p>NOTE - The "user" and "password" properties will be passed |
| explicitly, so they do not need to be included here.</p> |
| |
| <p><a name="TransactionIsolation"></a></p> |
| |
| <h2>TransactionIsolation</h2> |
| |
| <p>The default TransactionIsolation state of new connections.</p> |
| |
| <p>If not set then the <code>setTransactionIsolation</code> method will not |
| be called. The allowed values for this property are:</p> |
| |
| <ul> |
| <li><code>NONE</code></li> |
| <li><code>READ_COMMITTED</code></li> |
| <li><code>READ_UNCOMMITTED</code></li> |
| <li><code>REPEATABLE_READ</code></li> |
| <li><code>SERIALIZABLE</code></li> |
| </ul> |
| |
| <p>Note: Most JDBC drivers do not support all isolation levels |
| DefaultTransactionIsolation</p> |
| |
| <p><a name="initialSize"></a></p> |
| |
| <h2>initialSize</h2> |
| |
| <p>The initial size to initialize the pool of connections.</p> |
| |
| <p><a name="jtaManaged"></a></p> |
| |
| <h2>jtaManaged</h2> |
| |
| <p>Determines wether or not this data source should be JTA managed |
| or user managed.</p> |
| |
| <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> |
| |
| <p>In terms of JPA persistence.xml:</p> |
| |
| <ul> |
| <li><code>JtaManaged=true</code> can be used as a 'jta-data-source'</li> |
| <li><code>JtaManaged=false</code> can be used as a 'non-jta-data-source'</li> |
| </ul> |
| |
| <p><a name="maxOpenPreparedStatements"></a></p> |
| |
| <h2>maxOpenPreparedStatements</h2> |
| |
| <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> |
| |
| <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> |
| |
| <p><a name="poolPreparedStatements"></a></p> |
| |
| <h2>poolPreparedStatements</h2> |
| |
| <p>If true, a statement pool is created for each Connection and |
| PreparedStatements created by one of the following methods are |
| pooled:</p> |
| |
| <pre><code>public PreparedStatement prepareStatement(String sql); |
| public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) |
| </code></pre> |
| |
| <p><a name="testOnBorrow"></a></p> |
| |
| <h2>testOnBorrow</h2> |
| |
| <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> |
| |
| <p>NOTE - for a true value to have any effect, the |
| ValidationQuery parameter must be set.</p> |
| |
| <p><a name="testOnReturn"></a></p> |
| |
| <h2>testOnReturn</h2> |
| |
| <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> |
| |
| <p>NOTE - for a true value to have any effect, the |
| ValidationQuery parameter must be set.</p> |
| |
| <p><a name="testWhileIdle"></a></p> |
| |
| <h2>testWhileIdle</h2> |
| |
| <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> |
| |
| <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> |
| |
| <h1>XADataSource</h1> |
| |
| <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> |
| |
| <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> |
| |
| <h2>Single definition</h2> |
| |
| <p>First solution is to define as <code>JdbcDriver</code> an XADataSource:</p> |
| |
| <pre><code><Resource id="myXaDs" type="DataSource"> |
| JdbcDriver = org.foo.MyXaDataSource |
| |
| myXaProperty = value |
| |
| myPoolProperty = 10 |
| </Resource> |
| </code></pre> |
| |
| <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> |
| |
| <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> |
| |
| <p>Note: this solution uses the same logic than @DataSourceDefinition factory mecanism.</p> |
| |
| <h2>Two resources definition</h2> |
| |
| <p>An alternative is to define a resource for the XaDataSource:</p> |
| |
| <pre><code><Resource id="myXa" class-name="org.foo.MyXaDataSource"> |
| myXaProperty = value |
| </Resource> |
| </code></pre> |
| |
| <p>And then wrap it in the pool:</p> |
| |
| <pre><code><Resource id="myXaDs" type="DataSource"> |
| DataSourceCreator = [dbcp|dbcp-alternative] |
| myPoolProperty = 10 |
| </Resource> |
| </code></pre> |
| |
| <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> |
| |
| <h2>Known issues</h2> |
| |
| <p>For TomEE 1.7.0/1.7.1 you can need to add the property:</p> |
| |
| <pre><code> openejb.datasource.pool = true |
| </code></pre> |
| |
| <p>in resource properties to ensure the resource is pooled.</p> |
| |
| <h2>Details about DataSource and their factories (advanced configuration)</h2> |
| |
| <p><a href="datasource-configuration-by-creator.html">Configuration by creator</a></p> |
| |
| |
| |
| |
| <div id="edit" class="modal hide fade in" style="display: none; "> |
| <div class="modal-header"> |
| <a class="close" data-dismiss="modal">x</a> |
| |
| <h3>Thank you for contributing to the documentation!</h3> |
| </div> |
| <div class="modal-body"> |
| <h4>Any help with the documentation is greatly appreciated.</h4> |
| <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links. If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it. Don't be surprised if we like it so much we ask you for help with other pages :)</p> |
| <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small> |
| <!--[if gt IE 6]> |
| <h4>Internet Explorer Users</h4> |
| <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p> |
| <![endif]--> |
| |
| </div> |
| <div class="modal-footer"> |
| Do you have an Apache ID? |
| <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a> |
| <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a> |
| </div> |
| </div> |
| <script src="./resources/js/bootstrap-modal.js"></script> |
| |
| <footer> |
| <p>Copyright © 1999-2016 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> |
| </footer> |
| |
| </div> <!-- /container --> |
| |
| <!-- Javascript |
| ================================================== --> |
| <!-- Placed at the end of the document so the pages load faster --> |
| <script src="./resources/js/bootstrap-dropdown.js"></script> |
| |
| </body> |
| </html> |