blob: f7213453d229cdd452b32ca92789acc69b7ea4bb [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>JtaEntityManagerRegistry</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="JtaEntityManagerRegistry";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/openejb/persistence/JtaEntityManager.Timer.html" title="class in org.apache.openejb.persistence"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/openejb/persistence/JtaEntityManagerRegistry.html" target="_top">Frames</a></li>
<li><a href="JtaEntityManagerRegistry.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></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>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&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 name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.openejb.persistence</div>
<h2 title="Class JtaEntityManagerRegistry" class="title">Class JtaEntityManagerRegistry</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.openejb.persistence.JtaEntityManagerRegistry</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">JtaEntityManagerRegistry</span>
extends java.lang.Object</pre>
<div class="block">The JtaEntityManagerRegistry tracks JTA entity managers for transaction and extended scoped
entity managers. A single instance of this object should be created and shared by all
JtaEntityManagers in the server instance. Failure to do this will result in multiple entity
managers being created for a single persistence until, and that will result in cache
incoherence.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence">JtaEntityManagerRegistry.EntityManagerTracker</a></span></code>
<div class="block">This object is used track all EntityManagers inherited in order
to effectively close it when the latest Extended persistence context
is no more accessed.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.html#JtaEntityManagerRegistry-TransactionSynchronizationRegistry-">JtaEntityManagerRegistry</a></span>(TransactionSynchronizationRegistry&nbsp;transactionSynchronizationRegistry)</code>
<div class="block">Creates a JtaEntityManagerRegistry using the specified transactionSynchronizationRegistry for the registry
if transaction associated entity managers.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</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="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.html#addEntityManagers-java.lang.String-java.lang.Object-java.util.Map-">addEntityManagers</a></span>(java.lang.String&nbsp;deploymentId,
java.lang.Object&nbsp;primaryKey,
java.util.Map&lt;EntityManagerFactory,<a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence">JtaEntityManagerRegistry.EntityManagerTracker</a>&gt;&nbsp;entityManagers)</code>
<div class="block">Adds the entity managers for the specified component to the registry.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>EntityManager</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.html#getEntityManager-EntityManagerFactory-java.util.Map-boolean-java.lang.String-SynchronizationType-">getEntityManager</a></span>(EntityManagerFactory&nbsp;entityManagerFactory,
java.util.Map&nbsp;properties,
boolean&nbsp;extended,
java.lang.String&nbsp;unitName,
SynchronizationType&nbsp;synchronizationType)</code>
<div class="block">Gets an entity manager instance from the transaction registry, extended registry or for a transaction scoped
entity manager, creates a new one when an existing instance is not found.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence">JtaEntityManagerRegistry.EntityManagerTracker</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.html#getInheritedEntityManager-EntityManagerFactory-">getInheritedEntityManager</a></span>(EntityManagerFactory&nbsp;entityManagerFactory)</code>
<div class="block">Gets an exiting extended entity manager created by a component down the call stack.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.html#isTransactionActive--">isTransactionActive</a></span>()</code>
<div class="block">Is a transaction active?</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.util.Map&lt;EntityManagerFactory,<a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence">JtaEntityManagerRegistry.EntityManagerTracker</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.html#removeEntityManagers-java.lang.String-java.lang.Object-">removeEntityManagers</a></span>(java.lang.String&nbsp;deploymentId,
java.lang.Object&nbsp;primaryKey)</code>
<div class="block">Removed the registered entity managers for the specified component.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.html#transactionStarted-java.lang.String-java.lang.Object-">transactionStarted</a></span>(java.lang.String&nbsp;deploymentId,
java.lang.Object&nbsp;primaryKey)</code>
<div class="block">Notifies the registry that a user transaction has been started or the specified component.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="JtaEntityManagerRegistry-TransactionSynchronizationRegistry-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>JtaEntityManagerRegistry</h4>
<pre>public&nbsp;JtaEntityManagerRegistry(TransactionSynchronizationRegistry&nbsp;transactionSynchronizationRegistry)</pre>
<div class="block">Creates a JtaEntityManagerRegistry using the specified transactionSynchronizationRegistry for the registry
if transaction associated entity managers.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getEntityManager-EntityManagerFactory-java.util.Map-boolean-java.lang.String-SynchronizationType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEntityManager</h4>
<pre>public&nbsp;EntityManager&nbsp;getEntityManager(EntityManagerFactory&nbsp;entityManagerFactory,
java.util.Map&nbsp;properties,
boolean&nbsp;extended,
java.lang.String&nbsp;unitName,
SynchronizationType&nbsp;synchronizationType)
throws java.lang.IllegalStateException</pre>
<div class="block">Gets an entity manager instance from the transaction registry, extended registry or for a transaction scoped
entity manager, creates a new one when an existing instance is not found.
It is important that a component adds extended scoped entity managers to this registry when the component is
entered and removes them when exited. If this registration is not performed, an IllegalStateException will
be thrown when entity manger is fetched.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>entityManagerFactory</code> - the entity manager factory from which an entity manager is required</dd>
<dd><code>properties</code> - the properties passed to the entity manager factory when an entity manager is created</dd>
<dd><code>extended</code> - is the entity manager an extended context</dd>
<dd><code>unitName</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the new entity manager</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the entity manger is extended and there is not an existing entity manager
instance already registered</dd>
</dl>
</li>
</ul>
<a name="addEntityManagers-java.lang.String-java.lang.Object-java.util.Map-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addEntityManagers</h4>
<pre>public&nbsp;void&nbsp;addEntityManagers(java.lang.String&nbsp;deploymentId,
java.lang.Object&nbsp;primaryKey,
java.util.Map&lt;EntityManagerFactory,<a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence">JtaEntityManagerRegistry.EntityManagerTracker</a>&gt;&nbsp;entityManagers)
throws <a href="../../../../org/apache/openejb/persistence/EntityManagerAlreadyRegisteredException.html" title="class in org.apache.openejb.persistence">EntityManagerAlreadyRegisteredException</a></pre>
<div class="block">Adds the entity managers for the specified component to the registry. This should be called when the component
is entered.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>deploymentId</code> - the id of the component</dd>
<dd><code>entityManagers</code> - the entity managers to register</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/openejb/persistence/EntityManagerAlreadyRegisteredException.html" title="class in org.apache.openejb.persistence">EntityManagerAlreadyRegisteredException</a></code> - if an entity manager is already registered with the transaction
for one of the supplied entity manager factories; for EJBs this should be caught and rethown as an EJBException</dd>
</dl>
</li>
</ul>
<a name="removeEntityManagers-java.lang.String-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeEntityManagers</h4>
<pre>public&nbsp;java.util.Map&lt;EntityManagerFactory,<a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence">JtaEntityManagerRegistry.EntityManagerTracker</a>&gt;&nbsp;removeEntityManagers(java.lang.String&nbsp;deploymentId,
java.lang.Object&nbsp;primaryKey)</pre>
<div class="block">Removed the registered entity managers for the specified component.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>deploymentId</code> - the id of the component</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>EntityManager map we are removing</dd>
</dl>
</li>
</ul>
<a name="getInheritedEntityManager-EntityManagerFactory-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInheritedEntityManager</h4>
<pre>public&nbsp;<a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence">JtaEntityManagerRegistry.EntityManagerTracker</a>&nbsp;getInheritedEntityManager(EntityManagerFactory&nbsp;entityManagerFactory)</pre>
<div class="block">Gets an exiting extended entity manager created by a component down the call stack.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>entityManagerFactory</code> - the entity manager factory from which an entity manager is needed</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the existing entity manager or null if one is not found</dd>
</dl>
</li>
</ul>
<a name="transactionStarted-java.lang.String-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transactionStarted</h4>
<pre>public&nbsp;void&nbsp;transactionStarted(java.lang.String&nbsp;deploymentId,
java.lang.Object&nbsp;primaryKey)</pre>
<div class="block">Notifies the registry that a user transaction has been started or the specified component. When a transaction
is started for a component with registered extended entity managers, the entity managers are enrolled in the
transaction.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>deploymentId</code> - the id of the component</dd>
</dl>
</li>
</ul>
<a name="isTransactionActive--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isTransactionActive</h4>
<pre>public&nbsp;boolean&nbsp;isTransactionActive()</pre>
<div class="block">Is a transaction active?</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if a transaction is active; false otherwise</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/openejb/persistence/JtaEntityManager.Timer.html" title="class in org.apache.openejb.persistence"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/openejb/persistence/JtaEntityManagerRegistry.EntityManagerTracker.html" title="class in org.apache.openejb.persistence"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/openejb/persistence/JtaEntityManagerRegistry.html" target="_top">Frames</a></li>
<li><a href="JtaEntityManagerRegistry.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.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>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&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 name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>