blob: c30a44bee4033fe23995c908447d6ff64d976268 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Aries OSGi Transaction Control JDBC Provider (Local) :: Apache Aries</title>
<meta name="generator" content="Antora 2.3.3">
<link rel="stylesheet" href="../../../_/css/site.css">
<link rel="icon" href="../../../_/img/ram.ico" type="image/x-icon">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="../../../index.html">
<span>
<img src="../../../_/img/feather.svg">
</span>
<span>
<img src="../../../_/img/ram.svg">
</span>
Apache Aries
</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<a class="navbar-item" href="../../../index.html">Home</a>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Projects</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="../async-svcs.html">Async Services</a>
<a class="navbar-item" href="../blueprint.html">Blueprint</a>
<a class="navbar-item" href="../jmx.html">JMX</a>
<a class="navbar-item" href="../jndiproject.html">JNDI</a>
<a class="navbar-item" href="../jpaproject.html">JPA</a>
<a class="navbar-item" href="../rsa.html">Remote Service Admin</a>
<a class="navbar-item" href="../spi-fly.html">Spi-Fly</a>
<a class="navbar-item" href="../subsystems.html">Subsystems</a>
<a class="navbar-item" href="../transactioncontrol.html">Transaction Control</a>
</div>
</div>
<div class="navbar-item">
<span class="control">
<a class="button is-primary" href="../../downloads/currentreleases.html">Downloads</a>
</span>
</div>
</div>
</div>
</nav>
</header>
<div class="body">
<div class="nav-container" data-component="documentation" data-version="master">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="../../index.html">Documentation</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">Community</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/boardreports.html">Board Reports</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/overview.html">Community</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/resources.html">Community Resources</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/gettinginvolved.html">Getting Involved</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/logos.html">Logos</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/mailinglists.html">MailingLists</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/people.html">People</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Board Reports</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/april-2011.html">April 2011 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/april-2012.html">April 2012 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/april-2013.html">April 2013 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/april-2014.html">April 2014 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/april-2015.html">April 2015 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/april-2016.html">April 2016 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/april-2018.html">April 2018 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/december-2009.html">December 2009 Board Report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/december-2010.html">December 2010 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/february-2011.html">February 2011 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/feb-2015.html">February 2015 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/january-2011.html">January 2011 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/january-2012.html">January 2012 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/january-2013.html">January 2013 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/january-2014.html">January 2014 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/jan-2016.html">January 2016 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/jan-2017.html">January 2017 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/jan-2018.html">January 2018 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/july-2011.html">July 2011 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/july-2012.html">July 2012 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/july-2013.html">July 2013 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/july-2014.html">July 2014 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/july-2015.html">July 2015 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/july-2016.html">July 2016 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/july-2017.html">July 2017 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/july-2018.html">July 2018 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/june-2010.html">June 2010 Board Report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/march-2010.html">March 2010 Board Report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/march-2011.html">March 2011 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/may-2017.html">May 2017 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/november-2009.html">November 2009 Board Report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/nov-2015.html">November 2015 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/october-2009.html">October 2009 Board Report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/october-2011.html">October 2011 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/october-2012.html">October 2012 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/oct-2013.html">October 2013 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/oct-2014.html">October 2014 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/september-2015.html">October 2015 Report from the Apache Aries committee [Jeremy Hughes]</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/oct-2016.html">October 2016 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/oct-2017.html">October 2017 Board report</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../community/boardreports/september-2010.html">September 2010 Board Report</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">Development</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/versionpolicy.html">Aries versioning policy</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/buildingaries.html">BuildingAries</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/guidelines.html">Coding guidelines</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/compliancetesting.html">ComplianceTesting</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/resources.html">Developer Resources</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/maintainingthewebpages.html">MaintainingTheWebPages</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/architecture.html">Module build time dependencies</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/ReleaseProcessRequirements.html">Release process requirements</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/releasingaries.html">ReleasingAries</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/verifyingrelease.html">Verifying Release Artifacts</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">Documentation</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../documentation/application-dependencies.html">Aries Application Modules</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../documentation/articles.html">Articles</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../documentation/integrators-guide.html">Integrators guide</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../documentation/tools.html">Tools</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../documentation/tutorials.html">Tutorials</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Tools</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../documentation/tools/repositoryGenerator.html">Repository Generator Tool</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Tutorials</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../documentation/tutorials/blueprinthelloworldtutorial.html">BlueprintHelloWorldTutorial</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../documentation/tutorials/greetertutorial.html">Greeter: Another Blueprint Tutorial</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">Downloads</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../downloads/javadoc.html">0.3 Javadocs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../downloads/currentrelease.html">Apache Aries Downloads</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../downloads/archived-releases.html">Archived releases</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../downloads/currentreleases.html">Downloads</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../downloads/testresults.html">TestResults</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../downloads/ariestrader-1.0.0.html">The AriesTrader Sample</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../downloads/blogsample-1.0.0.html">The Blog Sample</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Archived Releases</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">0.1-incubating</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.1-incubating/0.1-incubating.html">Apache Aries 0.1-incubating release</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.1-incubating/ariestrader-0.1-incubating.html">The AriesTrader Sample</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.1-incubating/blogsample-0.1-incubating.html">The Blog Sample - version 0.1-incubating.</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">0.2-incubating</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.2-incubating/0.2-incubating.html">Apache Aries Downloads</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.2-incubating/0.2-incubating-releasenotes.html">Release Notes</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.2-incubating/0.2-incubating-testresults.html">TestResults</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.2-incubating/ariestrader-0.2-incubating.html">The AriesTrader Sample</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.2-incubating/blogsample-0.2-incubating.html">The Blog Sample</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">0.3-incubating</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.3/0.3.html">Apache Aries Downloads</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.3/0.3-releasenotes.html">Release Notes</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.3/ariestrader-0.3.html">The AriesTrader Sample</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/archived-releases/0.3/blogsample-0.3.html">The Blog Sample</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">CT</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">0.2-incubating</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.2-incubating/org.osgi.test.cases.blueprint.html">master@documentation:ROOT:downloads/ct/0.2-incubating/org.osgi.test.cases.blueprint.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.2-incubating/org.osgi.test.cases.blueprint.java5.html">master@documentation:ROOT:downloads/ct/0.2-incubating/org.osgi.test.cases.blueprint.java5.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.2-incubating/org.osgi.test.cases.blueprint.secure.html">master@documentation:ROOT:downloads/ct/0.2-incubating/org.osgi.test.cases.blueprint.secure.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.2-incubating/org.osgi.test.cases.jmx.html">master@documentation:ROOT:downloads/ct/0.2-incubating/org.osgi.test.cases.jmx.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.2-incubating/org.osgi.test.cases.jndi.html">master@documentation:ROOT:downloads/ct/0.2-incubating/org.osgi.test.cases.jndi.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.2-incubating/org.osgi.test.cases.transaction.html">master@documentation:ROOT:downloads/ct/0.2-incubating/org.osgi.test.cases.transaction.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.2-incubating/testresults.html">TestResults</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">0.3</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.3/org.osgi.test.cases.blueprint.html">master@documentation:ROOT:downloads/ct/0.3/org.osgi.test.cases.blueprint.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.3/org.osgi.test.cases.blueprint.java5.html">master@documentation:ROOT:downloads/ct/0.3/org.osgi.test.cases.blueprint.java5.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.3/org.osgi.test.cases.blueprint.secure.html">master@documentation:ROOT:downloads/ct/0.3/org.osgi.test.cases.blueprint.secure.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.3/org.osgi.test.cases.jmx.html">master@documentation:ROOT:downloads/ct/0.3/org.osgi.test.cases.jmx.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.3/org.osgi.test.cases.jndi.html">master@documentation:ROOT:downloads/ct/0.3/org.osgi.test.cases.jndi.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.3/org.osgi.test.cases.jndi.secure.html">master@documentation:ROOT:downloads/ct/0.3/org.osgi.test.cases.jndi.secure.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.3/org.osgi.test.cases.transaction.html">master@documentation:ROOT:downloads/ct/0.3/org.osgi.test.cases.transaction.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/0.3/testresults.html">TestResults</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">1.0.0</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.blueprint.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.blueprint.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.blueprint.java5.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.blueprint.java5.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.blueprint.secure.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.blueprint.secure.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.jmx.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.jmx.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.jndi.43.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.jndi.43.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.jndi.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.jndi.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.jndi.secure.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.jndi.secure.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.jpa.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.jpa.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/1.0.0/org.osgi.test.cases.transaction.html">master@documentation:ROOT:downloads/ct/1.0.0/org.osgi.test.cases.transaction.adoc</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">current-release (1.0??)</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/current-release/org.osgi.test.cases.blueprint.html">master@documentation:ROOT:downloads/ct/current-release/org.osgi.test.cases.blueprint.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/current-release/org.osgi.test.cases.blueprint.java5.html">master@documentation:ROOT:downloads/ct/current-release/org.osgi.test.cases.blueprint.java5.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/current-release/org.osgi.test.cases.blueprint.secure.html">master@documentation:ROOT:downloads/ct/current-release/org.osgi.test.cases.blueprint.secure.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/current-release/org.osgi.test.cases.jmx.html">master@documentation:ROOT:downloads/ct/current-release/org.osgi.test.cases.jmx.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/current-release/org.osgi.test.cases.jndi.html">master@documentation:ROOT:downloads/ct/current-release/org.osgi.test.cases.jndi.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../downloads/ct/current-release/org.osgi.test.cases.transaction.html">master@documentation:ROOT:downloads/ct/current-release/org.osgi.test.cases.transaction.adoc</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">Modules</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../applications.html">Aries Applications</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../containers.html">Aries Containers</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../jpaproject.html">Aries JPA</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../transactioncontrol.html">Aries Transaction Control Service</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../async-svcs.html">Asynchronous Services</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../blueprint.html">Blueprint</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../blueprintnoosgi.html">Blueprint No-OSGi</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../blueprint-maven-plugin.html">blueprint-maven-plugin</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../blueprintannotation.html">BlueprintAnnotation</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../blueprintweb.html">BlueprintWeb</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../ebamavenpluginproject.html">EBA Maven Plugin</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../esaanttask.html">ESA Ant Task</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../esamavenpluginproject.html">ESA Maven Plugin</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../jmx.html">JMX</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../jndiproject.html">JNDI</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../subsystems.html">OSGi Subsystems</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../rsa.html">RSA (Remote Service Admin)</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../samples.html">Samples</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../spi-fly.html">SPI Fly</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../transactionsproject.html">Transactions Project</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Samples</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../samples/goatsample.html">GOAT Sample</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../samples/ariestrader.html">The AriesTrader Sample</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../samples/blog-sample.html">The Blog Sample</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Transaction Control</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="advancedScopes.html">Advanced Scope control</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="localTransactions.html">Aries Local Transaction Control implementation</a>
</li>
<li class="nav-item is-current-page" data-depth="3">
<a class="nav-link" href="localJDBC.html">Aries OSGi Transaction Control JDBC Provider (Local)</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="xaJDBC.html">Aries OSGi Transaction Control JDBC Provider (XA)</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="localJPA.html">Aries Transaction Control JPA Provider (Local)</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="xaJPA.html">Aries Transaction Control JPA Provider (XA)</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="xaTransactions.html">Aries XA Transaction Control implementation</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="exceptionManagement.html">Exception Management</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="quickstart.html">Getting started with the Transaction Control Service</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="advancedResourceProviders.html">Making your own Resource Provider</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="spring-tx.html">Migrating from declarative transactions</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="index.html">The Transaction Control service</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="coordinator.html">Using the Coordinator to optimise Transactions</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="lastResourceGambit.html">Using the Last Resource Gambit</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Documentation</span>
<span class="version">master</span>
</div>
<ul class="components">
<li class="component is-current">
<span class="title">Documentation</span>
<ul class="versions">
<li class="version is-current is-latest">
<a href="../../index.html">master</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../index.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../../index.html">Documentation</a></li>
<li>Modules</li>
<li>Transaction Control</li>
<li><a href="localJDBC.html">Aries OSGi Transaction Control JDBC Provider (Local)</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/apache/aries-antora-site/edit/master/modules/ROOT/pages/modules/tx-control/localJDBC.adoc">Edit this Page</a></div>
</div>
<div class="content">
<article class="doc">
<h1 class="page">Aries OSGi Transaction Control JDBC Provider (Local)</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>The Aries Local JDBC provider implementation is available at the following maven coordinates:</p>
</div>
<div class="literalblock">
<div class="content">
<pre>&lt;dependency&gt;
&lt;groupId&gt;org.apache.aries.tx-control&lt;/groupId&gt;
&lt;artifactId&gt;tx-control-provider-jdbc-local&lt;/artifactId&gt;
&lt;version&gt;${aries.tx.control.version}&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
<div class="paragraph">
<p>This module is a prototype implementation of the OSGi Transaction Control JDBC resource provider.
It supports Local transactions only.
The provider also has built-in support for Database connection pooling using Hikari CP.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_when_should_i_use_this_module"><a class="anchor" href="#_when_should_i_use_this_module"></a>When should I use this module?</h2>
<div class="sectionbody">
<div class="paragraph">
<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>
</div>
<div class="paragraph">
<p>If two-phase commit is needed across multiple resources then an XA capable Resource Provider should be used instead if possible.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_quick_start"><a class="anchor" href="#_quick_start"></a>Quick Start</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A configured JDBCConnectionProvider can be created quickly using Configuration Admin and the OSGi JDBC Service.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Find and install a JDBC Service implementation for your chosen database (e.g.
the org.h2 bundle for H2)</p>
</li>
<li>
<p>Create a factory configuration using the factory pid <code>org.apache.aries.tx.control.jdbc.local</code> and add the following properties:</p>
<div class="ulist">
<ul>
<li>
<p><em>osgi.jdbc.driver.class</em> :- The driver class name (e.g.
org.h2.Driver)</p>
</li>
<li>
<p><em>url</em> :- The JDBC URL to use to connect to the database</p>
</li>
</ul>
</div>
</li>
</ol>
</div>
<div class="paragraph">
<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>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_using_the_local_jdbc_provider_bundle_details"><a class="anchor" href="#_using_the_local_jdbc_provider_bundle_details"></a>Using the Local JDBC Provider bundle (details)</h2>
<div class="sectionbody">
<div class="paragraph">
<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>
</div>
<div class="paragraph">
<p>When using local transactions the JDBC API is used to commit or rollback the Database connection.
There is no need for client code to call commit, rollback, or close on the connection.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_creating_a_resource_programmatically"><a class="anchor" href="#_creating_a_resource_programmatically"></a>Creating a resource programmatically</h2>
<div class="sectionbody">
<div class="paragraph">
<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>
</div>
<div class="paragraph">
<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>
</div>
<div class="sect2">
<h3 id="_declarative_services_example"><a class="anchor" href="#_declarative_services_example"></a>Declarative Services Example</h3>
<div class="literalblock">
<div class="content">
<pre>@Component
public class TransactionalJDBCComponent {
@Reference
TransactionControl txControl;
@Reference
DataSourceFactory dsf;
@Reference
JDBCConnectionProviderFactory providerFactory;
Connection conn;
@Activate
void start(Config config) {
Properties jdbcProps = new Properties();
jdbcProps.put(JDBC_URL, config.url());
jdbcProps.put(JDBC_USER, config.user());
jdbcProps.put(JDBC_PASSWORD, config._password());
Map&lt;String, Object&gt; providerProps = new HashMap&lt;&gt;();
providerProps.put(MAX_POOL_SIZE, 8);
conn = providerFactory.getProviderFor(dsf,
jdbcProps, providerProps).getResource(txControl);
}
public void findUserName(String id) {
txControl.required(() -&gt; {
// Use the connection in here
});
}
}</pre>
</div>
</div>
<div class="paragraph">
<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>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_creating_a_resource_using_a_factory_configuration"><a class="anchor" href="#_creating_a_resource_using_a_factory_configuration"></a>Creating a resource using a factory configuration</h2>
<div class="sectionbody">
<div class="paragraph">
<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>
</div>
<div class="paragraph">
<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>
</div>
<div class="sect2">
<h3 id="_declarative_services_example_2"><a class="anchor" href="#_declarative_services_example_2"></a>Declarative Services Example</h3>
<div class="literalblock">
<div class="content">
<pre>@Component
public class TransactionalJDBCComponent {
@Reference
TransactionControl control;
Connection conn;
@Reference(target="(dataSourceName=myDataSource)")
void setProvider(JDBCConnectionProvider provider) {
conn = provider.getResource(control);
}
public void findUserName(String id) {
control.required(() -&gt; {
// Use the connection in here
});
}
}</pre>
</div>
</div>
<div class="paragraph">
<p>The factory pid is <em>org.apache.aries.tx.control.jdbc.local</em> and it may use the following properties (all optional):</p>
</div>
</div>
<div class="sect2">
<h3 id="_resource_provider_properties"><a class="anchor" href="#_resource_provider_properties"></a>Resource Provider properties</h3>
<div class="ulist">
<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>
</div>
</div>
<div class="sect2">
<h3 id="_jdbc_properties"><a class="anchor" href="#_jdbc_properties"></a>JDBC properties</h3>
<div class="paragraph">
<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>
</div>
<div class="ulist">
<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>
</div>
</div>
</div>
</article>
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
</div>
</main>
</div>
<footer class="footer">
<p>Content licensed under AL2. UI licensed under MPL-2.0 with extensions licensed under AL2</p>
</footer>
<script src="../../../_/js/site.js"></script>
<script async src="../../../_/js/vendor/highlight.js"></script>
</body>
</html>