| <!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><dependency> |
| <groupId>org.apache.aries.tx-control</groupId> |
| <artifactId>tx-control-provider-jdbc-local</artifactId> |
| <version>${aries.tx.control.version}</version> |
| </dependency></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<String, Object> providerProps = new HashMap<>(); |
| providerProps.put(MAX_POOL_SIZE, 8); |
| |
| conn = providerFactory.getProviderFor(dsf, |
| jdbcProps, providerProps).getResource(txControl); |
| } |
| |
| public void findUserName(String id) { |
| txControl.required(() -> { |
| // 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(() -> { |
| // 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> |