blob: 49ad7b605cd2dc762da20052e04785f090e78678 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.10) on Mon Dec 05 10:27:04 MSK 2022 -->
<title>ServerRuntime (cayenne-doc: Cayenne Documentation 4.2.RC2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2022-12-05">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ServerRuntime (cayenne-doc: Cayenne Documentation 4.2.RC2 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ServerRuntime.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><a href="http://cayenne.apache.org" target="top">Apache Cayenne</a></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.cayenne.configuration.server</a></div>
<h2 title="Class ServerRuntime" class="title">Class ServerRuntime</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../CayenneRuntime.html" title="class in org.apache.cayenne.configuration">org.apache.cayenne.configuration.CayenneRuntime</a></li>
<li>
<ul class="inheritance">
<li>org.apache.cayenne.configuration.server.ServerRuntime</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">ServerRuntime</span>
extends <a href="../CayenneRuntime.html" title="class in org.apache.cayenne.configuration">CayenneRuntime</a></pre>
<div class="block">Object representing Cayenne stack. Serves as an entry point to Cayenne for user applications and a factory of ObjectContexts.
Implementation is a thin wrapper of the dependency injection container.
<p>The "Server" prefix in the name is in contrast to ROP "client" (that is started via ClientRuntime). So
ServerRuntime is the default Cayenne stack that you should be using in all apps with the exception of client-side ROP.</p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>3.1</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.cayenne.configuration.CayenneRuntime">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.cayenne.configuration.<a href="../CayenneRuntime.html" title="class in org.apache.cayenne.configuration">CayenneRuntime</a></h3>
<code><a href="../CayenneRuntime.html#injector">injector</a>, <a href="../CayenneRuntime.html#modules">modules</a>, <a href="../CayenneRuntime.html#threadInjector">threadInjector</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.util.Collection)">ServerRuntime</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;<a href="../../di/Module.html" title="interface in org.apache.cayenne.di">Module</a>&gt;&nbsp;modules)</code></th>
<td class="colLast">
<div class="block">Creates a server runtime configuring it with a standard set of services
contained in <a href="ServerModule.html" title="class in org.apache.cayenne.configuration.server"><code>ServerModule</code></a>.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static <a href="ServerRuntimeBuilder.html" title="class in org.apache.cayenne.configuration.server">ServerRuntimeBuilder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#builder()">builder</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates a builder of ServerRuntime.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="ServerRuntimeBuilder.html" title="class in org.apache.cayenne.configuration.server">ServerRuntimeBuilder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#builder(java.lang.String)">builder</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;name)</code></th>
<td class="colLast">
<div class="block">Creates a builder of ServerRuntime.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../access/DataDomain.html" title="class in org.apache.cayenne.access">DataDomain</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDataDomain()">getDataDomain</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the main runtime DataDomain.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql" class="externalLink">DataSource</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDataSource()">getDataSource</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a default DataSource for this runtime.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql" class="externalLink">DataSource</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDataSource(java.lang.String)">getDataSource</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;dataNodeName)</code></th>
<td class="colLast">
<div class="block">Provides access to the JDBC DataSource assigned to a given DataNode.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#performInTransaction(org.apache.cayenne.tx.TransactionalOperation)">performInTransaction</a></span>&#8203;(<a href="../../tx/TransactionalOperation.html" title="interface in org.apache.cayenne.tx">TransactionalOperation</a>&lt;T&gt;&nbsp;op)</code></th>
<td class="colLast">
<div class="block">Runs provided operation wrapped in a single transaction.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#performInTransaction(org.apache.cayenne.tx.TransactionalOperation,org.apache.cayenne.tx.TransactionDescriptor)">performInTransaction</a></span>&#8203;(<a href="../../tx/TransactionalOperation.html" title="interface in org.apache.cayenne.tx">TransactionalOperation</a>&lt;T&gt;&nbsp;op,
<a href="../../tx/TransactionDescriptor.html" title="class in org.apache.cayenne.tx">TransactionDescriptor</a>&nbsp;descriptor)</code></th>
<td class="colLast">
<div class="block">Runs provided operation wrapped in a single transaction.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#performInTransaction(org.apache.cayenne.tx.TransactionalOperation,org.apache.cayenne.tx.TransactionListener)">performInTransaction</a></span>&#8203;(<a href="../../tx/TransactionalOperation.html" title="interface in org.apache.cayenne.tx">TransactionalOperation</a>&lt;T&gt;&nbsp;op,
<a href="../../tx/TransactionListener.html" title="interface in org.apache.cayenne.tx">TransactionListener</a>&nbsp;callback)</code></th>
<td class="colLast">
<div class="block">Runs provided operation wrapped in a single transaction.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#performInTransaction(org.apache.cayenne.tx.TransactionalOperation,org.apache.cayenne.tx.TransactionListener,org.apache.cayenne.tx.TransactionDescriptor)">performInTransaction</a></span>&#8203;(<a href="../../tx/TransactionalOperation.html" title="interface in org.apache.cayenne.tx">TransactionalOperation</a>&lt;T&gt;&nbsp;op,
<a href="../../tx/TransactionListener.html" title="interface in org.apache.cayenne.tx">TransactionListener</a>&nbsp;callback,
<a href="../../tx/TransactionDescriptor.html" title="class in org.apache.cayenne.tx">TransactionDescriptor</a>&nbsp;descriptor)</code></th>
<td class="colLast">
<div class="block">Runs provided operation wrapped in a single transaction.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.cayenne.configuration.CayenneRuntime">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.cayenne.configuration.<a href="../CayenneRuntime.html" title="class in org.apache.cayenne.configuration">CayenneRuntime</a></h3>
<code><a href="../CayenneRuntime.html#bindThreadInjector(org.apache.cayenne.di.Injector)">bindThreadInjector</a>, <a href="../CayenneRuntime.html#getChannel()">getChannel</a>, <a href="../CayenneRuntime.html#getInjector()">getInjector</a>, <a href="../CayenneRuntime.html#getModules()">getModules</a>, <a href="../CayenneRuntime.html#getThreadInjector()">getThreadInjector</a>, <a href="../CayenneRuntime.html#newContext()">newContext</a>, <a href="../CayenneRuntime.html#newContext(org.apache.cayenne.DataChannel)">newContext</a>, <a href="../CayenneRuntime.html#shutdown()">shutdown</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(java.util.Collection)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ServerRuntime</h4>
<pre>protected&nbsp;ServerRuntime&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;<a href="../../di/Module.html" title="interface in org.apache.cayenne.di">Module</a>&gt;&nbsp;modules)</pre>
<div class="block">Creates a server runtime configuring it with a standard set of services
contained in <a href="ServerModule.html" title="class in org.apache.cayenne.configuration.server"><code>ServerModule</code></a>. CayenneServerModule is created with
one or more 'configurationLocations'. An optional array of extra modules
may contain service overrides and/or user services.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.0</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="builder()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>builder</h4>
<pre class="methodSignature">public static&nbsp;<a href="ServerRuntimeBuilder.html" title="class in org.apache.cayenne.configuration.server">ServerRuntimeBuilder</a>&nbsp;builder()</pre>
<div class="block">Creates a builder of ServerRuntime.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a builder of ServerRuntime.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.0</dd>
</dl>
</li>
</ul>
<a id="builder(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>builder</h4>
<pre class="methodSignature">public static&nbsp;<a href="ServerRuntimeBuilder.html" title="class in org.apache.cayenne.configuration.server">ServerRuntimeBuilder</a>&nbsp;builder&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;name)</pre>
<div class="block">Creates a builder of ServerRuntime.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - optional symbolic name of the created runtime.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a named builder of ServerRuntime.</dd>
</dl>
</li>
</ul>
<a id="performInTransaction(org.apache.cayenne.tx.TransactionalOperation)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>performInTransaction</h4>
<pre class="methodSignature">public&nbsp;&lt;T&gt;&nbsp;T&nbsp;performInTransaction&#8203;(<a href="../../tx/TransactionalOperation.html" title="interface in org.apache.cayenne.tx">TransactionalOperation</a>&lt;T&gt;&nbsp;op)</pre>
<div class="block">Runs provided operation wrapped in a single transaction. Transaction
handling delegated to the internal <a href="../../tx/TransactionManager.html" title="interface in org.apache.cayenne.tx"><code>TransactionManager</code></a>. Nested
calls to 'performInTransaction' are safe and attached to the same
in-progress transaction. TransactionalOperation can be some arbitrary
user code, which most often than not will consist of multiple Cayenne
operations.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.0</dd>
</dl>
</li>
</ul>
<a id="performInTransaction(org.apache.cayenne.tx.TransactionalOperation,org.apache.cayenne.tx.TransactionListener)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>performInTransaction</h4>
<pre class="methodSignature">public&nbsp;&lt;T&gt;&nbsp;T&nbsp;performInTransaction&#8203;(<a href="../../tx/TransactionalOperation.html" title="interface in org.apache.cayenne.tx">TransactionalOperation</a>&lt;T&gt;&nbsp;op,
<a href="../../tx/TransactionListener.html" title="interface in org.apache.cayenne.tx">TransactionListener</a>&nbsp;callback)</pre>
<div class="block">Runs provided operation wrapped in a single transaction. Transaction
handling delegated to the internal <a href="../../tx/TransactionManager.html" title="interface in org.apache.cayenne.tx"><code>TransactionManager</code></a>. Nested
calls to 'performInTransaction' are safe and attached to the same
in-progress transaction. TransactionalOperation can be some arbitrary
user code, which most often than not will consist of multiple Cayenne
operations.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.0</dd>
</dl>
</li>
</ul>
<a id="performInTransaction(org.apache.cayenne.tx.TransactionalOperation,org.apache.cayenne.tx.TransactionDescriptor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>performInTransaction</h4>
<pre class="methodSignature">public&nbsp;&lt;T&gt;&nbsp;T&nbsp;performInTransaction&#8203;(<a href="../../tx/TransactionalOperation.html" title="interface in org.apache.cayenne.tx">TransactionalOperation</a>&lt;T&gt;&nbsp;op,
<a href="../../tx/TransactionDescriptor.html" title="class in org.apache.cayenne.tx">TransactionDescriptor</a>&nbsp;descriptor)</pre>
<div class="block">Runs provided operation wrapped in a single transaction. Transaction
handling delegated to the internal <a href="../../tx/TransactionManager.html" title="interface in org.apache.cayenne.tx"><code>TransactionManager</code></a>. Nested
calls to 'performInTransaction' are safe and attached to the same
in-progress transaction. TransactionalOperation can be some arbitrary
user code, which most often than not will consist of multiple Cayenne
operations.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - result type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>op</code> - an operation to perform within the transaction.</dd>
<dd><code>descriptor</code> - describes additional transaction parameters</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a value returned by the "op" operation.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.2</dd>
</dl>
</li>
</ul>
<a id="performInTransaction(org.apache.cayenne.tx.TransactionalOperation,org.apache.cayenne.tx.TransactionListener,org.apache.cayenne.tx.TransactionDescriptor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>performInTransaction</h4>
<pre class="methodSignature">public&nbsp;&lt;T&gt;&nbsp;T&nbsp;performInTransaction&#8203;(<a href="../../tx/TransactionalOperation.html" title="interface in org.apache.cayenne.tx">TransactionalOperation</a>&lt;T&gt;&nbsp;op,
<a href="../../tx/TransactionListener.html" title="interface in org.apache.cayenne.tx">TransactionListener</a>&nbsp;callback,
<a href="../../tx/TransactionDescriptor.html" title="class in org.apache.cayenne.tx">TransactionDescriptor</a>&nbsp;descriptor)</pre>
<div class="block">Runs provided operation wrapped in a single transaction. Transaction
handling delegated to the internal <a href="../../tx/TransactionManager.html" title="interface in org.apache.cayenne.tx"><code>TransactionManager</code></a>. Nested
calls to 'performInTransaction' are safe and attached to the same
in-progress transaction. TransactionalOperation can be some arbitrary
user code, which most often than not will consist of multiple Cayenne
operations.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - returned value type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>op</code> - an operation to perform within the transaction.</dd>
<dd><code>callback</code> - a callback to notify as transaction progresses through stages.</dd>
<dd><code>descriptor</code> - describes additional transaction parameters</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a value returned by the "op" operation.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.2</dd>
</dl>
</li>
</ul>
<a id="getDataDomain()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDataDomain</h4>
<pre class="methodSignature">public&nbsp;<a href="../../access/DataDomain.html" title="class in org.apache.cayenne.access">DataDomain</a>&nbsp;getDataDomain()</pre>
<div class="block">Returns the main runtime DataDomain. Note that by default the returned
DataDomain is the same as the main DataChannel returned by
<a href="../CayenneRuntime.html#getChannel()"><code>CayenneRuntime.getChannel()</code></a>. Although users may redefine DataChannel provider
in the DI registry, for instance to decorate this DataDomain with a
custom wrapper.</div>
</li>
</ul>
<a id="getDataSource()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDataSource</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql" class="externalLink">DataSource</a>&nbsp;getDataSource()</pre>
<div class="block">Returns a default DataSource for this runtime. If no default DataSource
exists, an exception is thrown.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.0</dd>
</dl>
</li>
</ul>
<a id="getDataSource(java.lang.String)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getDataSource</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql" class="externalLink">DataSource</a>&nbsp;getDataSource&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;dataNodeName)</pre>
<div class="block">Provides access to the JDBC DataSource assigned to a given DataNode. A
null argument will work if there's only one DataNode configured.
<p>
Normally Cayenne applications don't need to access DataSource or any
other JDBC code directly, however in some unusual conditions it may be
needed, and this method provides a shortcut to raw JDBC.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ServerRuntime.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><a href="http://cayenne.apache.org" target="top">Apache Cayenne</a></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2001&#x2013;2022 <a href="https://cayenne.apache.org/">Apache Cayenne</a>. All rights reserved.</small></p>
</footer>
</body>
</html>