aries-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r986954 - in /websites/staging/aries/trunk/content: ./ modules/transactioncontrol.html modules/tx-control/index.html modules/tx-control/localJDBC.html modules/tx-control/xaJDBC.html
Date Thu, 28 Apr 2016 15:38:45 GMT
Author: buildbot
Date: Thu Apr 28 15:38:43 2016
New Revision: 986954

Log:
Staging update by buildbot for aries

Added:
    websites/staging/aries/trunk/content/modules/tx-control/localJDBC.html
    websites/staging/aries/trunk/content/modules/tx-control/xaJDBC.html
Modified:
    websites/staging/aries/trunk/content/   (props changed)
    websites/staging/aries/trunk/content/modules/transactioncontrol.html
    websites/staging/aries/trunk/content/modules/tx-control/index.html

Propchange: websites/staging/aries/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Apr 28 15:38:43 2016
@@ -1 +1 @@
-1741429
+1741462

Modified: websites/staging/aries/trunk/content/modules/transactioncontrol.html
==============================================================================
--- websites/staging/aries/trunk/content/modules/transactioncontrol.html (original)
+++ websites/staging/aries/trunk/content/modules/transactioncontrol.html Thu Apr 28 15:38:43 2016
@@ -23,7 +23,7 @@
   <meta name="keywords" content="..."/>
   <meta name="description" content="..." />
     <title>
-    Apache Aries - TransactionsProject
+    Apache Aries - Aries Transaction Control Service
     </title>
   </head>
 <body onload="SetMenu()">

Modified: websites/staging/aries/trunk/content/modules/tx-control/index.html
==============================================================================
--- websites/staging/aries/trunk/content/modules/tx-control/index.html (original)
+++ websites/staging/aries/trunk/content/modules/tx-control/index.html Thu Apr 28 15:38:43 2016
@@ -287,8 +287,8 @@ first.</p>
 </ul>
 <h3 id="configuring-jdbc-access">Configuring JDBC access<a class="headerlink" href="#configuring-jdbc-access" title="Permanent link">&para;</a></h3>
 <ul>
-<li>TODO With Local Transactions</li>
-<li>TODO With XA Transactions</li>
+<li><a href="localJDBC.html">JDBC with Local Transactions</a></li>
+<li><a href="xaJDBC.html">JDBC with XA Transactions</a></li>
 </ul>
 <h3 id="configuring-jpa-access">Configuring JPA access<a class="headerlink" href="#configuring-jpa-access" title="Permanent link">&para;</a></h3>
 <ul>

Added: websites/staging/aries/trunk/content/modules/tx-control/localJDBC.html
==============================================================================
--- websites/staging/aries/trunk/content/modules/tx-control/localJDBC.html (added)
+++ websites/staging/aries/trunk/content/modules/tx-control/localJDBC.html Thu Apr 28 15:38:43 2016
@@ -0,0 +1,498 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd";>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements. See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License. You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<html>
+  <head>
+    <link rel="shortcut icon" href="http://aries.apache.org/images/favicon.ico"></link>
+    <link type="text/css" rel="stylesheet" href="http://aries.apache.org/resources/site.css"></link>
+    </script><script src="http://aries.apache.org/resources/menus.js" language="javascript" type="text/javascript"></script>
+  <meta name="keywords" content="..."/>
+  <meta name="description" content="..." />
+    <title>
+    Apache Aries - Local JDBC Configuration Provider
+    </title>
+  </head>
+<body onload="SetMenu()">
+
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr width="100%">
+    <td id="cell-0-0" colspan="2">&nbsp;</td>
+    <td id="cell-0-1">&nbsp;</td>
+    <td id="cell-0-2" colspan="2">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-1-0">&nbsp;</td>
+    <td id="cell-1-1">&nbsp;</td>
+    <td id="cell-1-2">
+      <div style="padding: 5px;">
+        <div id="banner">
+          <!-- Banner -->
+      <table border="0" cellpadding="0" cellspacing="0" width="100%">
+        <tr>
+          <td align="left" class="topbardiv" nowrap="">
+            <a href="http://aries.apache.org/" title="Apache Aries"> <img border="0" src="http://aries.apache.org/images/Arieslogo_Horizontal.gif"> </a>
+          </td>
+          <td align="right" nowrap="">
+            <a href="http://www.apache.org/" title="The Apache Software Foundation"> <img border="0" src="http://aries.apache.org/images/apache_feather.png"> </a>
+              </td>
+        </tr>
+      </table>
+          <!-- Banner -->
+        </div>
+      </div>
+      <div id="top-menu">
+        <table border="0" cellpadding="1" cellspacing="0" width="100%">
+          <tr>
+            <td>
+              <div align="left">
+                <!-- Breadcrumbs -->
+                <!-- Breadcrumbs -->
+              </div>
+            </td>
+            <td>
+              <div align="right">
+                <!-- Quicklinks -->
+          <DIV style="padding: 5px 5px 0px 25px;">
+            <FORM action="http://www.google.com/search" method="get" style="font-size: 10px;">
+            <A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License</A> 
+            <INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
+            <INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
+            <INPUT maxlength="255" name="q" size="15" type="text" value></INPUT>
+            <INPUT name="btnG" type="submit" value="Search"></INPUT>
+            <INPUT name="domains" type="hidden" value="aries.apache.org"></INPUT>
+            <INPUT name="sitesearch" type="hidden" value="aries.apache.org"></INPUT>
+            </FORM>
+          </DIV>
+                <!-- Quicklinks -->
+              </div>
+            </td>
+          </tr>
+        </table>
+      </div>
+    </td>
+    <td id="cell-1-3">&nbsp;</td>
+    <td id="cell-1-4">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-2-0" colspan="2">&nbsp;</td>
+    <td id="cell-2-1">
+      <table>
+        <tr height="100%" valign="top">
+          <td height="100%">
+            <div id="wrapper-menu-page-right">
+              <div id="wrapper-menu-page-top">
+                <div id="wrapper-menu-page-bottom">
+                  <div id="menu-page">
+                    <!-- NavigationBar -->
+          <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<div onclick="SwitchMenu('documentation')" id="documentationTitle" class="menutitle">Documentation</div>
+
+<div id="documentation" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/documentation/integrators-guide.html">Integrators Guide</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/articles.html">Articles</a> 
+    </div>
+    <div class="menuitem">
+        <a href="https://svn.apache.org/repos/asf/aries/slides/">Slides</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/tutorials.html">Tutorials</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/tools.html">Tools</a> 
+    </div>
+</div>
+
+<div onclick="SwitchMenu('modules')" id="modulesTitle" class="menutitle">Modules</div>
+
+<div id="modules" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/modules/samples.html">Samples</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/async-svcs.html">Asynchronous Services</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprint.html">Blueprint</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprint-maven-plugin.html">Blueprint-maven-plugin</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprintannotation.html">Blueprint Annotations</a>
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprintnoosgi.html">Blueprint No-OSGi</a>
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprintweb.html">Blueprint Web</a>
+    </div>
+    <div class="menuitem">
+        <a href="/modules/esaanttask.html">ESA Ant Task </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/ebamavenpluginproject.html">EBA Maven Plugin </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/esamavenpluginproject.html">ESA Maven Plugin </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/jmx.html">JMX</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/jndiproject.html">JNDI</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/jpaproject.html">JPA</a> 
+    </div>
+        <div class="menuitem">
+        <a href="/modules/transactioncontrol.html">Transaction Control Service</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/transactionsproject.html">Transactions</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/rsa.html">Remote Service Admin (RSA)</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/spi-fly.html">SPI Fly</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/subsystems.html">Subsystems</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/applications.html">Applications (obsolete)</a> 
+    </div>
+</div>
+
+<div onclick="SwitchMenu('downloads')" id="downloadsTitle" class="menutitle">Downloads</div>
+
+<div id="downloads" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/downloads/currentreleases.html">Current Releases</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/downloads/testresults.html">Compliance Tests</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/downloads/archived-releases.html">Archived Releases</a> 
+    </div>
+</div>
+
+<div onclick="SwitchMenu('community')" id="communityTitle" class="menutitle">Community</div>
+
+<div id="community" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/community/resources.html">Community Resources</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/gettinginvolved.html">Getting Involved</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/people.html">Who we are</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/boardreports.html">Board Reports</a> 
+    </div>
+        <div class="menuitem">
+                <a href="/community/logos.html">Logos for Users</a>
+        </div>
+</div>
+
+<div onclick="SwitchMenu('development')" id="developmentTitle" class="menutitle">Development</div>
+
+<div id="development" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/development/buildingaries.html">Building Aries </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/guidelines.html">Cording Guidelines</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/architecture.html">Architecture</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/releasingaries.html">Releasing Aries </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/compliancetesting.html">OSGi Compliance Tests </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/maintainingthewebpages.html">Web Site Maintenance </a> 
+    </div>
+</div>
+
+<div onclick="SwitchMenu('sponsorship')" id="sponsorshipTitle" class="menutitle">Sponsorship</div>
+
+<div id="sponsorship" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="http://www.apache.org/foundation/thanks.html">Thanks</a> 
+    </div>
+    <div class="menuitem">
+        <a href="http://www.apache.org/foundation/sponsorship.html">Sponsoring Apache</a> 
+    </div>
+</div>
+                    <!-- NavigationBar -->
+                  </div>
+                </div>
+              </div>
+            </div>
+          </td>
+          <td height="100%" width="100%">
+            <!-- Content -->
+            <div class="wiki-content"><style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h1 id="aries-osgi-transaction-control-jdbc-provider-local">Aries OSGi Transaction Control JDBC Provider (Local)<a class="headerlink" href="#aries-osgi-transaction-control-jdbc-provider-local" title="Permanent link">&para;</a></h1>
+<p>The Aries Local JDBC provider implementation is available at the following maven coordinates:</p>
+<div class="codehilite"><pre>    <span class="nt">&lt;dependency&gt;</span>
+        <span class="nt">&lt;groupId&gt;</span>org.apache.aries.tx-control<span class="nt">&lt;/groupId&gt;</span>
+        <span class="nt">&lt;artifactId&gt;</span>tx-control-provider-jdbc-local<span class="nt">&lt;/artifactId&gt;</span>
+        <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span class="n">aries</span><span class="o">.</span><span class="n">tx</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">version</span><span class="cp">}</span><span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;/dependency&gt;</span>
+</pre></div>
+
+
+<p>This module is a prototype implementation of the OSGi Transaction Control JDBC resource provider. 
+It supports Local transactions only.</p>
+<h2 id="when-should-i-use-this-module">When should I use this module?<a class="headerlink" href="#when-should-i-use-this-module" title="Permanent link">&para;</a></h2>
+<p>If you wish to use entirely lightweight, resource-local transactions then it is best to pair this module 
+with the Aries Local Transaction Control service bundle.</p>
+<p>If two-phase commit is needed across multiple resources then an XA capable Resource Provider should be 
+used instead if possible.</p>
+<h2 id="quick-start">Quick Start<a class="headerlink" href="#quick-start" title="Permanent link">&para;</a></h2>
+<p>A configured JDBCConnectionProvider can be created quickly using Configuration Admin and the
+OSGi JDBC Service.</p>
+<ol>
+<li>Find and install a JDBC Service implementation for your chosen database (e.g. the org.h2 bundle for H2)</li>
+<li>Create a factory configuration using the factory pid <code>org.apache.aries.tx.control.jdbc.local</code>
+ and add the following properties:</li>
+<li><em>osgi.jdbc.driver.class</em> :- The driver class name (e.g. org.h2.Driver)</li>
+<li><em>url</em> :- The JDBC URL to use to connect to the database</li>
+</ol>
+<p>When the DataSourceFactory for the named <code>osgi.jdbc.driver.class</code> becomes available
+the Local JDBC Resource Provider will create a JDBCConnectionProvider and register it in the OSGi
+service registry. All configuration properties (apart from the database password) will be registered as 
+properties of the JDBCConnectionProvider service. These properties can be used to select a
+ResourceProvider if more than one is present in the Service Registry.</p>
+<h1 id="using-the-local-jdbc-provider-bundle-details">Using the Local JDBC Provider bundle (details)<a class="headerlink" href="#using-the-local-jdbc-provider-bundle-details" title="Permanent link">&para;</a></h1>
+<p>This Resource Provider is used in conjunction with a TransactionControl service to provide scoped 
+access to a JDBC connection with support for Local Transactions.</p>
+<h2 id="creating-a-resource-programmatically">Creating a resource programmatically<a class="headerlink" href="#creating-a-resource-programmatically" title="Permanent link">&para;</a></h2>
+<p>Preparing a resource for use is very simple. Create a <code>JDBCConnectionProvider</code> using the 
+<code>JDBCConnectionProviderFactory</code> service from the service registry, then connect that 
+provider to a <code>TransactionControl</code> service. This will return a thread-safe JDBC connection 
+that can then be used in any ongoing scoped work.</p>
+<p>The normal inputs to a JDBCConnectionProviderFactory are a DataSourceFactory, some JDBC 
+properties to connect to the database with, and some properties to control the resource provider 
+(such as connection pooling).</p>
+<h3 id="declarative-services-example">Declarative Services Example<a class="headerlink" href="#declarative-services-example" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">Component</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">TransactionalJDBCComponent</span> <span class="p">{</span>
+    <span class="p">@</span><span class="n">Reference</span>
+    <span class="n">TransactionControl</span> <span class="n">txControl</span><span class="p">;</span>
+
+    <span class="p">@</span><span class="n">Reference</span>
+    <span class="n">DataSourceFactory</span> <span class="n">dsf</span><span class="p">;</span>
+
+    <span class="p">@</span><span class="n">Reference</span>
+    <span class="n">JDBCConnectionProviderFactory</span> <span class="n">providerFactory</span><span class="p">;</span>
+
+    <span class="n">Connection</span> <span class="n">conn</span><span class="p">;</span>
+
+    <span class="p">@</span><span class="n">Activate</span>
+    <span class="n">void</span> <span class="n">start</span><span class="p">(</span><span class="n">Config</span> <span class="n">config</span><span class="p">)</span> <span class="p">{</span>
+
+        <span class="n">Properties</span> <span class="n">jdbcProps</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Properties</span><span class="p">();</span>
+        <span class="n">jdbcProps</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">JDBC_URL</span><span class="p">,</span> <span class="n">config</span><span class="p">.</span><span class="n">url</span><span class="p">());</span>
+        <span class="n">jdbcProps</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">JDBC_USER</span><span class="p">,</span> <span class="n">config</span><span class="p">.</span><span class="n">user</span><span class="p">());</span>
+        <span class="n">jdbcProps</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">JDBC_PASSWORD</span><span class="p">,</span> <span class="n">config</span><span class="p">.</span><span class="n">_password</span><span class="p">());</span>
+
+        <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">providerProps</span> <span class="p">=</span> <span class="n">new</span> <span class="n">HashMap</span><span class="o">&lt;&gt;</span><span class="p">();</span>
+        <span class="n">providerProps</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">MAX_POOL_SIZE</span><span class="p">,</span> 8<span class="p">);</span>
+
+        <span class="n">conn</span> <span class="p">=</span> <span class="n">providerFactory</span><span class="p">.</span><span class="n">getProviderFor</span><span class="p">(</span><span class="n">dsf</span><span class="p">,</span> 
+        <span class="n">jdbcProps</span><span class="p">,</span> <span class="n">providerProps</span><span class="p">).</span><span class="n">getResource</span><span class="p">(</span><span class="n">txControl</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">public</span> <span class="n">void</span> <span class="n">findUserName</span><span class="p">(</span><span class="n">String</span> <span class="n">id</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">txControl</span><span class="p">.</span><span class="n">required</span><span class="p">(()</span> <span class="o">-&gt;</span> <span class="p">{</span>
+                <span class="o">//</span> <span class="n">Use</span> <span class="n">the</span> <span class="n">connection</span> <span class="n">in</span> <span class="n">here</span>
+            <span class="p">});</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>If a JDBC DataSource/Driver is already configured then it can be passed in to the 
+JDBCConnectionProviderFactory instead of a DataSourceFactory and JDBC configuration.</p>
+<h2 id="creating-a-resource-using-a-factory-configuration">Creating a resource using a factory configuration<a class="headerlink" href="#creating-a-resource-using-a-factory-configuration" title="Permanent link">&para;</a></h2>
+<p>Whilst it is simple to use a <code>JDBCConnectionProviderFactory</code> it does require some 
+lifecycle code to be written. It is therefore possible to directly create JDBC resources using factory 
+configurations. When created, the factory service will listen for an applicable DataSourceFactory. 
+Once a suitable DataSourceFactory is available then a JDBCConnectionProvider service will be published. </p>
+<p>Configuration properties (except the JDBC password) are set as service properties for the registered 
+<code>JDBCConnectionProvider</code>. These properties may therefore be used in filters to select 
+a particular provider.</p>
+<h3 id="declarative-services-example_1">Declarative Services Example<a class="headerlink" href="#declarative-services-example_1" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">Component</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">TransactionalJDBCComponent</span> <span class="p">{</span>
+
+    <span class="p">@</span><span class="n">Reference</span>
+    <span class="n">TransactionControl</span> <span class="n">control</span><span class="p">;</span>
+
+    <span class="n">Connection</span> <span class="n">conn</span><span class="p">;</span>
+
+    <span class="p">@</span><span class="n">Reference</span><span class="p">(</span><span class="n">target</span><span class="p">=</span>&quot;<span class="p">(</span><span class="n">dataSourceName</span><span class="p">=</span><span class="n">myDataSource</span><span class="p">)</span>&quot;<span class="p">)</span>
+    <span class="n">void</span> <span class="n">setProvider</span><span class="p">(</span><span class="n">JDBCConnectionProvider</span> <span class="n">provider</span><span class="p">)</span> <span class="p">{</span>
+         <span class="n">conn</span> <span class="p">=</span> <span class="n">provider</span><span class="p">.</span><span class="n">getResource</span><span class="p">(</span><span class="n">control</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">public</span> <span class="n">void</span> <span class="n">findUserName</span><span class="p">(</span><span class="n">String</span> <span class="n">id</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">control</span><span class="p">.</span><span class="n">required</span><span class="p">(()</span> <span class="o">-&gt;</span> <span class="p">{</span>
+                <span class="o">//</span> <span class="n">Use</span> <span class="n">the</span> <span class="n">connection</span> <span class="n">in</span> <span class="n">here</span>
+            <span class="p">});</span>
+    <span class="p">}</span> 
+<span class="p">}</span>
+</pre></div>
+
+
+<p>The factory pid is <em>org.apache.aries.tx.control.jdbc.local</em> and it may use the following properties (all optional):</p>
+<h3 id="resource-provider-properties">Resource Provider properties<a class="headerlink" href="#resource-provider-properties" title="Permanent link">&para;</a></h3>
+<ul>
+<li>
+<p><em>aries.dsf.target.filter</em> : The target filter to use when searching for a DataSourceFactory. If not specified then <em>osgi.jdbc.driver.class</em> must be specified.</p>
+</li>
+<li>
+<p><em>aries.jdbc.property.names</em> : The names of the properties to pass to the DataSourceFactory when creating the JDBC resources</p>
+</li>
+<li>
+<p><em>osgi.jdbc.driver.class</em> : Used to locate the DataSourceFactory service if the <em>aries.dsf.target.filter</em> is not set.</p>
+</li>
+<li>
+<p><em>osgi.local.enabled</em> : Defaults to true. If false then resource creation will fail</p>
+</li>
+<li>
+<p><em>osgi.xa.enabled</em> : Defaults to false. If true then resource creation will fail</p>
+</li>
+<li>
+<p><em>osgi.connection.pooling.enabled</em> : Defaults to true. If true then the Database connections will be pooled.</p>
+</li>
+<li>
+<p><em>osgi.connection.max</em> : Defaults to 10. The maximum number of connections that should be kept in the pool</p>
+</li>
+<li>
+<p><em>osgi.connection.min</em> : Defaults to 10. The minimum number of connections that should be kept in the pool</p>
+</li>
+<li>
+<p><em>osgi.connection.timeout</em> : Defaults to 30,000 (30 seconds). The maximum time in milliseconds to block when waiting for a database connection</p>
+</li>
+<li>
+<p><em>osgi.idle.timeout</em> : Defaults to 180,000 (3 minutes). The time in milliseconds before an idle connection is eligible to be closed.</p>
+</li>
+<li>
+<p><em>osgi.connection.timeout</em> : Defaults to 10,800,000 (3 hours). The maximum time in milliseconds that a connection may remain open before being closed.</p>
+</li>
+<li>
+<p><em>osgi.use.driver</em> : Defaults to false. If true then use the createDriver method to connect to the database.</p>
+</li>
+</ul>
+<h3 id="jdbc-properties">JDBC properties<a class="headerlink" href="#jdbc-properties" title="Permanent link">&para;</a></h3>
+<p>The following properties will automatically be passed to the DataSourceFactory if they are present. The list of properties may be overridden using the <em>aries.jdbc.property.names</em> property if necessary.</p>
+<ul>
+<li>
+<p><em>databaseName</em> : The name of the database</p>
+</li>
+<li>
+<p><em>dataSourceName</em> : The name of the dataSource that will be created</p>
+</li>
+<li>
+<p><em>description</em> : A description of the dataSource being created</p>
+</li>
+<li>
+<p><em>networkProtocol</em> : The network protocol to use.</p>
+</li>
+<li>
+<p><em>portNumber</em> : The port number to use</p>
+</li>
+<li>
+<p><em>roleName</em> : The name of the JDBC role</p>
+</li>
+<li>
+<p><em>serverName</em> : The name of the database server</p>
+</li>
+<li>
+<p><em>url</em> : The JDBC url to use (often used instead of other properties such as <em>serverName</em>, <em>portNumber</em> and <em>databaseName</em>).</p>
+</li>
+<li>
+<p><em>user</em> : The JDBC user</p>
+</li>
+<li>
+<p><em>password</em> : The JDBC password</p>
+</li>
+</ul></div>
+            <!-- Content -->
+          </td>
+        </tr>
+      </table>
+   </td>
+   <td id="cell-2-2" colspan="2">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+   <td id="cell-3-0">&nbsp;</td>
+   <td id="cell-3-1">&nbsp;</td>
+   <td id="cell-3-2">
+     <div id="footer">
+       <!-- Footer -->
+       <div id="site-footer">
+         <a href="http://aries.apache.org/privacy-policy.html";>Privacy
+Policy</a> 
+       </div>
+       <!-- Footer -->
+     </div>
+   </td>
+   <td id="cell-3-3">&nbsp;</td>
+   <td id="cell-3-4">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-4-0" colspan="2">&nbsp;</td>
+    <td id="cell-4-1">&nbsp;</td>
+    <td id="cell-4-2" colspan="2">&nbsp;</td>
+  </tr>
+</table>
+</body>
+</html> 

Added: websites/staging/aries/trunk/content/modules/tx-control/xaJDBC.html
==============================================================================
--- websites/staging/aries/trunk/content/modules/tx-control/xaJDBC.html (added)
+++ websites/staging/aries/trunk/content/modules/tx-control/xaJDBC.html Thu Apr 28 15:38:43 2016
@@ -0,0 +1,499 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd";>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements. See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License. You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<html>
+  <head>
+    <link rel="shortcut icon" href="http://aries.apache.org/images/favicon.ico"></link>
+    <link type="text/css" rel="stylesheet" href="http://aries.apache.org/resources/site.css"></link>
+    </script><script src="http://aries.apache.org/resources/menus.js" language="javascript" type="text/javascript"></script>
+  <meta name="keywords" content="..."/>
+  <meta name="description" content="..." />
+    <title>
+    Apache Aries - Aries OSGi Transaction Control JDBC Provider (XA)
+    </title>
+  </head>
+<body onload="SetMenu()">
+
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr width="100%">
+    <td id="cell-0-0" colspan="2">&nbsp;</td>
+    <td id="cell-0-1">&nbsp;</td>
+    <td id="cell-0-2" colspan="2">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-1-0">&nbsp;</td>
+    <td id="cell-1-1">&nbsp;</td>
+    <td id="cell-1-2">
+      <div style="padding: 5px;">
+        <div id="banner">
+          <!-- Banner -->
+      <table border="0" cellpadding="0" cellspacing="0" width="100%">
+        <tr>
+          <td align="left" class="topbardiv" nowrap="">
+            <a href="http://aries.apache.org/" title="Apache Aries"> <img border="0" src="http://aries.apache.org/images/Arieslogo_Horizontal.gif"> </a>
+          </td>
+          <td align="right" nowrap="">
+            <a href="http://www.apache.org/" title="The Apache Software Foundation"> <img border="0" src="http://aries.apache.org/images/apache_feather.png"> </a>
+              </td>
+        </tr>
+      </table>
+          <!-- Banner -->
+        </div>
+      </div>
+      <div id="top-menu">
+        <table border="0" cellpadding="1" cellspacing="0" width="100%">
+          <tr>
+            <td>
+              <div align="left">
+                <!-- Breadcrumbs -->
+                <!-- Breadcrumbs -->
+              </div>
+            </td>
+            <td>
+              <div align="right">
+                <!-- Quicklinks -->
+          <DIV style="padding: 5px 5px 0px 25px;">
+            <FORM action="http://www.google.com/search" method="get" style="font-size: 10px;">
+            <A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License</A> 
+            <INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
+            <INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
+            <INPUT maxlength="255" name="q" size="15" type="text" value></INPUT>
+            <INPUT name="btnG" type="submit" value="Search"></INPUT>
+            <INPUT name="domains" type="hidden" value="aries.apache.org"></INPUT>
+            <INPUT name="sitesearch" type="hidden" value="aries.apache.org"></INPUT>
+            </FORM>
+          </DIV>
+                <!-- Quicklinks -->
+              </div>
+            </td>
+          </tr>
+        </table>
+      </div>
+    </td>
+    <td id="cell-1-3">&nbsp;</td>
+    <td id="cell-1-4">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-2-0" colspan="2">&nbsp;</td>
+    <td id="cell-2-1">
+      <table>
+        <tr height="100%" valign="top">
+          <td height="100%">
+            <div id="wrapper-menu-page-right">
+              <div id="wrapper-menu-page-top">
+                <div id="wrapper-menu-page-bottom">
+                  <div id="menu-page">
+                    <!-- NavigationBar -->
+          <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<div onclick="SwitchMenu('documentation')" id="documentationTitle" class="menutitle">Documentation</div>
+
+<div id="documentation" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/documentation/integrators-guide.html">Integrators Guide</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/articles.html">Articles</a> 
+    </div>
+    <div class="menuitem">
+        <a href="https://svn.apache.org/repos/asf/aries/slides/">Slides</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/tutorials.html">Tutorials</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/tools.html">Tools</a> 
+    </div>
+</div>
+
+<div onclick="SwitchMenu('modules')" id="modulesTitle" class="menutitle">Modules</div>
+
+<div id="modules" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/modules/samples.html">Samples</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/async-svcs.html">Asynchronous Services</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprint.html">Blueprint</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprint-maven-plugin.html">Blueprint-maven-plugin</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprintannotation.html">Blueprint Annotations</a>
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprintnoosgi.html">Blueprint No-OSGi</a>
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprintweb.html">Blueprint Web</a>
+    </div>
+    <div class="menuitem">
+        <a href="/modules/esaanttask.html">ESA Ant Task </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/ebamavenpluginproject.html">EBA Maven Plugin </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/esamavenpluginproject.html">ESA Maven Plugin </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/jmx.html">JMX</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/jndiproject.html">JNDI</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/jpaproject.html">JPA</a> 
+    </div>
+        <div class="menuitem">
+        <a href="/modules/transactioncontrol.html">Transaction Control Service</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/transactionsproject.html">Transactions</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/rsa.html">Remote Service Admin (RSA)</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/spi-fly.html">SPI Fly</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/subsystems.html">Subsystems</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/applications.html">Applications (obsolete)</a> 
+    </div>
+</div>
+
+<div onclick="SwitchMenu('downloads')" id="downloadsTitle" class="menutitle">Downloads</div>
+
+<div id="downloads" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/downloads/currentreleases.html">Current Releases</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/downloads/testresults.html">Compliance Tests</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/downloads/archived-releases.html">Archived Releases</a> 
+    </div>
+</div>
+
+<div onclick="SwitchMenu('community')" id="communityTitle" class="menutitle">Community</div>
+
+<div id="community" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/community/resources.html">Community Resources</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/gettinginvolved.html">Getting Involved</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/people.html">Who we are</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/boardreports.html">Board Reports</a> 
+    </div>
+        <div class="menuitem">
+                <a href="/community/logos.html">Logos for Users</a>
+        </div>
+</div>
+
+<div onclick="SwitchMenu('development')" id="developmentTitle" class="menutitle">Development</div>
+
+<div id="development" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/development/buildingaries.html">Building Aries </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/guidelines.html">Cording Guidelines</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/architecture.html">Architecture</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/releasingaries.html">Releasing Aries </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/compliancetesting.html">OSGi Compliance Tests </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/maintainingthewebpages.html">Web Site Maintenance </a> 
+    </div>
+</div>
+
+<div onclick="SwitchMenu('sponsorship')" id="sponsorshipTitle" class="menutitle">Sponsorship</div>
+
+<div id="sponsorship" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="http://www.apache.org/foundation/thanks.html">Thanks</a> 
+    </div>
+    <div class="menuitem">
+        <a href="http://www.apache.org/foundation/sponsorship.html">Sponsoring Apache</a> 
+    </div>
+</div>
+                    <!-- NavigationBar -->
+                  </div>
+                </div>
+              </div>
+            </div>
+          </td>
+          <td height="100%" width="100%">
+            <!-- Content -->
+            <div class="wiki-content"><style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h1 id="aries-osgi-transaction-control-jdbc-provider-xa">Aries OSGi Transaction Control JDBC Provider (XA)<a class="headerlink" href="#aries-osgi-transaction-control-jdbc-provider-xa" title="Permanent link">&para;</a></h1>
+<p>The Aries Local JDBC provider implementation is available at the following maven coordinates:</p>
+<div class="codehilite"><pre>    <span class="nt">&lt;dependency&gt;</span>
+        <span class="nt">&lt;groupId&gt;</span>org.apache.aries.tx-control<span class="nt">&lt;/groupId&gt;</span>
+        <span class="nt">&lt;artifactId&gt;</span>tx-control-provider-jdbc-xa<span class="nt">&lt;/artifactId&gt;</span>
+        <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span class="n">aries</span><span class="o">.</span><span class="n">tx</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">version</span><span class="cp">}</span><span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;/dependency&gt;</span>
+</pre></div>
+
+
+<p>This module is a prototype implementation of the OSGi Transaction Control JDBC resource provider. 
+It supports XA transactions and Local Transactions.</p>
+<h2 id="when-should-i-use-this-module">When should I use this module?<a class="headerlink" href="#when-should-i-use-this-module" title="Permanent link">&para;</a></h2>
+<p>If two-phase commit is needed across multiple resources then it is best to pair this module with 
+the tx-control-service-xa bundle.</p>
+<p>If you wish to use entirely lightweight, resource-local transactions then then the 
+tx-control-service-local and tx-control-provider-jdbc-local bundles can be used instead.</p>
+<h2 id="quick-start">Quick Start<a class="headerlink" href="#quick-start" title="Permanent link">&para;</a></h2>
+<p>A configured JDBCConnectionProvider can be created quickly using Configuration Admin and the
+OSGi JDBC Service.</p>
+<ol>
+<li>Find and install a JDBC Service implementation for your chosen database (e.g. the org.h2 bundle for H2)</li>
+<li>Create a factory configuration using the factory pid <code>org.apache.aries.tx.control.jdbc.xa</code>
+ and add the following properties:</li>
+<li><em>osgi.jdbc.driver.class</em> :- The driver class name (e.g. org.h2.Driver)</li>
+<li><em>url</em> :- The JDBC URL to use to connect to the database</li>
+</ol>
+<p>When the DataSourceFactory for the named <code>osgi.jdbc.driver.class</code> becomes available
+the Local JDBC Resource Provider will create a JDBCConnectionProvider and register it in the OSGi
+service registry. All configuration properties (apart from the database password) will be registered as 
+properties of the JDBCConnectionProvider service. These properties can be used to select a
+ResourceProvider if more than one is present in the Service Registry.</p>
+<h1 id="using-the-xa-jdbc-provider-bundle-details">Using the XA JDBC Provider bundle (details)<a class="headerlink" href="#using-the-xa-jdbc-provider-bundle-details" title="Permanent link">&para;</a></h1>
+<p>This Resource Provider is used in conjunction with a TransactionControl service to provide scoped 
+access to a JDBC connection with support for XA Transactions and Local Transactions.</p>
+<h2 id="creating-a-resource-programmatically">Creating a resource programmatically<a class="headerlink" href="#creating-a-resource-programmatically" title="Permanent link">&para;</a></h2>
+<p>Preparing a resource for use is very simple. Create a <code>JDBCConnectionProvider</code> using the 
+<code>JDBCConnectionProviderFactory</code> service from the service registry, then connect that 
+provider to a <code>TransactionControl</code> service. This will return a thread-safe JDBC connection 
+that can then be used in any ongoing scoped work. The JDBCConnectionProviderFactory service is registered
+with the <code>osgi.xa.enabled</code> property set to <code>true</code>.</p>
+<p>The normal inputs to a JDBCConnectionProviderFactory are a DataSourceFactory, some JDBC 
+properties to connect to the database with, and some properties to control the resource provider 
+(such as connection pooling).</p>
+<h3 id="declarative-services-example">Declarative Services Example<a class="headerlink" href="#declarative-services-example" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">Component</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">TransactionalJDBCComponent</span> <span class="p">{</span>
+    <span class="p">@</span><span class="n">Reference</span>
+    <span class="n">TransactionControl</span> <span class="n">txControl</span><span class="p">;</span>
+
+    <span class="p">@</span><span class="n">Reference</span>
+    <span class="n">DataSourceFactory</span> <span class="n">dsf</span><span class="p">;</span>
+
+    <span class="p">@</span><span class="n">Reference</span>
+    <span class="n">JDBCConnectionProviderFactory</span> <span class="n">providerFactory</span><span class="p">;</span>
+
+    <span class="n">Connection</span> <span class="n">conn</span><span class="p">;</span>
+
+    <span class="p">@</span><span class="n">Activate</span>
+    <span class="n">void</span> <span class="n">start</span><span class="p">(</span><span class="n">Config</span> <span class="n">config</span><span class="p">)</span> <span class="p">{</span>
+
+        <span class="n">Properties</span> <span class="n">jdbcProps</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Properties</span><span class="p">();</span>
+        <span class="n">jdbcProps</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">JDBC_URL</span><span class="p">,</span> <span class="n">config</span><span class="p">.</span><span class="n">url</span><span class="p">());</span>
+        <span class="n">jdbcProps</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">JDBC_USER</span><span class="p">,</span> <span class="n">config</span><span class="p">.</span><span class="n">user</span><span class="p">());</span>
+        <span class="n">jdbcProps</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">JDBC_PASSWORD</span><span class="p">,</span> <span class="n">config</span><span class="p">.</span><span class="n">_password</span><span class="p">());</span>
+
+        <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">providerProps</span> <span class="p">=</span> <span class="n">new</span> <span class="n">HashMap</span><span class="o">&lt;&gt;</span><span class="p">();</span>
+        <span class="n">providerProps</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">MAX_POOL_SIZE</span><span class="p">,</span> 8<span class="p">);</span>
+
+        <span class="n">conn</span> <span class="p">=</span> <span class="n">providerFactory</span><span class="p">.</span><span class="n">getProviderFor</span><span class="p">(</span><span class="n">dsf</span><span class="p">,</span> 
+        <span class="n">jdbcProps</span><span class="p">,</span> <span class="n">providerProps</span><span class="p">).</span><span class="n">getResource</span><span class="p">(</span><span class="n">txControl</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">public</span> <span class="n">void</span> <span class="n">findUserName</span><span class="p">(</span><span class="n">String</span> <span class="n">id</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">txControl</span><span class="p">.</span><span class="n">required</span><span class="p">(()</span> <span class="o">-&gt;</span> <span class="p">{</span>
+                <span class="o">//</span> <span class="n">Use</span> <span class="n">the</span> <span class="n">connection</span> <span class="n">in</span> <span class="n">here</span>
+            <span class="p">});</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>If a JDBC DataSource/Driver is already configured then it can be passed in to the 
+JDBCConnectionProviderFactory instead of a DataSourceFactory and JDBC configuration.</p>
+<h2 id="creating-a-resource-using-a-factory-configuration">Creating a resource using a factory configuration<a class="headerlink" href="#creating-a-resource-using-a-factory-configuration" title="Permanent link">&para;</a></h2>
+<p>Whilst it is simple to use a <code>JDBCConnectionProviderFactory</code> it does require some 
+lifecycle code to be written. It is therefore possible to directly create JDBC resources using factory 
+configurations. When created, the factory service will listen for an applicable DataSourceFactory. 
+Once a suitable DataSourceFactory is available then a JDBCConnectionProvider service will be published. </p>
+<p>Configuration properties (except the JDBC password) are set as service properties for the registered 
+<code>JDBCConnectionProvider</code>. These properties may therefore be used in filters to select 
+a particular provider.</p>
+<h3 id="declarative-services-example_1">Declarative Services Example<a class="headerlink" href="#declarative-services-example_1" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">Component</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">TransactionalJDBCComponent</span> <span class="p">{</span>
+
+    <span class="p">@</span><span class="n">Reference</span>
+    <span class="n">TransactionControl</span> <span class="n">control</span><span class="p">;</span>
+
+    <span class="n">Connection</span> <span class="n">conn</span><span class="p">;</span>
+
+    <span class="p">@</span><span class="n">Reference</span><span class="p">(</span><span class="n">target</span><span class="p">=</span>&quot;<span class="p">(</span><span class="n">dataSourceName</span><span class="p">=</span><span class="n">myDataSource</span><span class="p">)</span>&quot;<span class="p">)</span>
+    <span class="n">void</span> <span class="n">setProvider</span><span class="p">(</span><span class="n">JDBCConnectionProvider</span> <span class="n">provider</span><span class="p">)</span> <span class="p">{</span>
+         <span class="n">conn</span> <span class="p">=</span> <span class="n">provider</span><span class="p">.</span><span class="n">getResource</span><span class="p">(</span><span class="n">control</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">public</span> <span class="n">void</span> <span class="n">findUserName</span><span class="p">(</span><span class="n">String</span> <span class="n">id</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">control</span><span class="p">.</span><span class="n">required</span><span class="p">(()</span> <span class="o">-&gt;</span> <span class="p">{</span>
+                <span class="o">//</span> <span class="n">Use</span> <span class="n">the</span> <span class="n">connection</span> <span class="n">in</span> <span class="n">here</span>
+            <span class="p">});</span>
+    <span class="p">}</span> 
+<span class="p">}</span>
+</pre></div>
+
+
+<p>The factory pid is <em>org.apache.aries.tx.control.jdbc.xa</em> and it may use the following properties (all optional):</p>
+<h3 id="resource-provider-properties">Resource Provider properties<a class="headerlink" href="#resource-provider-properties" title="Permanent link">&para;</a></h3>
+<ul>
+<li>
+<p><em>aries.dsf.target.filter</em> : The target filter to use when searching for a DataSourceFactory. If not specified then <em>osgi.jdbc.driver.class</em> must be specified.</p>
+</li>
+<li>
+<p><em>aries.jdbc.property.names</em> : The names of the properties to pass to the DataSourceFactory when creating the JDBC resources</p>
+</li>
+<li>
+<p><em>osgi.jdbc.driver.class</em> : Used to locate the DataSourceFactory service if the <em>aries.dsf.target.filter</em> is not set.</p>
+</li>
+<li>
+<p><em>osgi.local.enabled</em> : Defaults to true. If false then this resource will not participate in local transactions, and will fail if used within one. One of <em>osgi.local.enabled</em> and <em>osgi.xa.enabled</em> must be true.</p>
+</li>
+<li>
+<p><em>osgi.xa.enabled</em> : Defaults to true. If false then this resource will not participate in xa transactions, and will fail if used within one. One of <em>osgi.local.enabled</em> and <em>osgi.xa.enabled</em> must be true.</p>
+</li>
+<li>
+<p><em>osgi.connection.pooling.enabled</em> : Defaults to true. If true then the Database connections will be pooled.</p>
+</li>
+<li>
+<p><em>osgi.connection.max</em> : Defaults to 10. The maximum number of connections that should be kept in the pool</p>
+</li>
+<li>
+<p><em>osgi.connection.min</em> : Defaults to 10. The minimum number of connections that should be kept in the pool</p>
+</li>
+<li>
+<p><em>osgi.connection.timeout</em> : Defaults to 30,000 (30 seconds). The maximum time in milliseconds to block when waiting for a database connection</p>
+</li>
+<li>
+<p><em>osgi.idle.timeout</em> : Defaults to 180,000 (3 minutes). The time in milliseconds before an idle connection is eligible to be closed.</p>
+</li>
+<li>
+<p><em>osgi.connection.timeout</em> : Defaults to 10,800,000 (3 hours). The maximum time in milliseconds that a connection may remain open before being closed.</p>
+</li>
+<li>
+<p><em>osgi.use.driver</em> : Defaults to false. If true then use the createDriver method to connect to the database. Cannot be true if <em>osgi.xa.enabled</em> is true.</p>
+</li>
+</ul>
+<h3 id="jdbc-properties">JDBC properties<a class="headerlink" href="#jdbc-properties" title="Permanent link">&para;</a></h3>
+<p>The following properties will automatically be passed to the DataSourceFactory if they are present. The list of properties may be overridden using the <em>aries.jdbc.property.names</em> property if necessary.</p>
+<ul>
+<li>
+<p><em>databaseName</em> : The name of the database</p>
+</li>
+<li>
+<p><em>dataSourceName</em> : The name of the dataSource that will be created</p>
+</li>
+<li>
+<p><em>description</em> : A description of the dataSource being created</p>
+</li>
+<li>
+<p><em>networkProtocol</em> : The network protocol to use.</p>
+</li>
+<li>
+<p><em>portNumber</em> : The port number to use</p>
+</li>
+<li>
+<p><em>roleName</em> : The name of the JDBC role</p>
+</li>
+<li>
+<p><em>serverName</em> : The name of the database server</p>
+</li>
+<li>
+<p><em>url</em> : The JDBC url to use (often used instead of other properties such as <em>serverName</em>, <em>portNumber</em> and <em>databaseName</em>).</p>
+</li>
+<li>
+<p><em>user</em> : The JDBC user</p>
+</li>
+<li>
+<p><em>password</em> : The JDBC password</p>
+</li>
+</ul></div>
+            <!-- Content -->
+          </td>
+        </tr>
+      </table>
+   </td>
+   <td id="cell-2-2" colspan="2">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+   <td id="cell-3-0">&nbsp;</td>
+   <td id="cell-3-1">&nbsp;</td>
+   <td id="cell-3-2">
+     <div id="footer">
+       <!-- Footer -->
+       <div id="site-footer">
+         <a href="http://aries.apache.org/privacy-policy.html";>Privacy
+Policy</a> 
+       </div>
+       <!-- Footer -->
+     </div>
+   </td>
+   <td id="cell-3-3">&nbsp;</td>
+   <td id="cell-3-4">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-4-0" colspan="2">&nbsp;</td>
+    <td id="cell-4-1">&nbsp;</td>
+    <td id="cell-4-2" colspan="2">&nbsp;</td>
+  </tr>
+</table>
+</body>
+</html> 



Mime
View raw message