blob: ee3b4a07ab47e0141f3d22ed8c03f7a07dda21de [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>MdbInstanceFactory</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="MdbInstanceFactory";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":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/core/mdb/MdbContext.html" title="class in org.apache.openejb.core.mdb"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/openejb/core/mdb/MdbInstanceManager.html" title="class in org.apache.openejb.core.mdb"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/openejb/core/mdb/MdbInstanceFactory.html" target="_top">Frames</a></li>
<li><a href="MdbInstanceFactory.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>Nested&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.core.mdb</div>
<h2 title="Class MdbInstanceFactory" class="title">Class MdbInstanceFactory</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.openejb.core.mdb.MdbInstanceFactory</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">MdbInstanceFactory</span>
extends java.lang.Object</pre>
<div class="block">A MdbInstanceFactory creates instances of message driven beans for a single instance. This class differs from other
instance managers in OpenEJB as it doesn't do pooling and it creates instances for only a single EJB deployment.
</p>
The MdbContainer assumes that the resouce adapter is pooling message endpoints so a second level of pooling in the
container would be inefficient. This is true of all known resouce adapters in opensource (ActiveMQ), so if this is
a poor assumption for your resource adapter, contact the OpenEJB developers.
</p>
This class can optionally limit the number of bean instances and therefore the message endpoints available to the
resource adapter.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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/core/mdb/MdbInstanceFactory.html#MdbInstanceFactory-org.apache.openejb.BeanContext-org.apache.openejb.spi.SecurityService-int-">MdbInstanceFactory</a></span>(<a href="../../../../../org/apache/openejb/BeanContext.html" title="class in org.apache.openejb">BeanContext</a>&nbsp;beanContext,
<a href="../../../../../org/apache/openejb/spi/SecurityService.html" title="interface in org.apache.openejb.spi">SecurityService</a>&nbsp;securityService,
int&nbsp;instanceLimit)</code>
<div class="block">Creates a MdbInstanceFactory for a single specific deployment.</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>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/openejb/core/mdb/MdbInstanceFactory.html#createInstance-boolean-">createInstance</a></span>(boolean&nbsp;ignoreInstanceCount)</code>
<div class="block">Creates a new mdb instance preforming all necessary lifecycle callbacks</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/openejb/core/mdb/MdbInstanceFactory.html#freeInstance-org.apache.openejb.core.mdb.Instance-boolean-">freeInstance</a></span>(<a href="../../../../../org/apache/openejb/core/mdb/Instance.html" title="class in org.apache.openejb.core.mdb">Instance</a>&nbsp;instance,
boolean&nbsp;ignoredInstanceCount)</code>
<div class="block">Frees an instance no longer needed by the resource adapter.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/openejb/core/mdb/MdbInstanceFactory.html#getInstanceCount--">getInstanceCount</a></span>()</code>
<div class="block">Gets the current number of created instances.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/openejb/core/mdb/MdbInstanceFactory.html#getInstanceLimit--">getInstanceLimit</a></span>()</code>
<div class="block">Gets the maximal number of instances that can exist at any time.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/openejb/core/mdb/MdbInstanceFactory.html#recreateInstance-java.lang.Object-">recreateInstance</a></span>(java.lang.Object&nbsp;bean)</code>
<div class="block">Recreates a bean instance that has thrown a system exception.</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="MdbInstanceFactory-org.apache.openejb.BeanContext-org.apache.openejb.spi.SecurityService-int-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MdbInstanceFactory</h4>
<pre>public&nbsp;MdbInstanceFactory(<a href="../../../../../org/apache/openejb/BeanContext.html" title="class in org.apache.openejb">BeanContext</a>&nbsp;beanContext,
<a href="../../../../../org/apache/openejb/spi/SecurityService.html" title="interface in org.apache.openejb.spi">SecurityService</a>&nbsp;securityService,
int&nbsp;instanceLimit)
throws <a href="../../../../../org/apache/openejb/OpenEJBException.html" title="class in org.apache.openejb">OpenEJBException</a></pre>
<div class="block">Creates a MdbInstanceFactory for a single specific deployment.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanContext</code> - the deployment for which instances will be created</dd>
<dd><code>securityService</code> - the transaction manager for this container system</dd>
<dd><code>instanceLimit</code> - the maximal number of instances or <= 0 if unlimited</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/openejb/OpenEJBException.html" title="class in org.apache.openejb">OpenEJBException</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getInstanceLimit--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInstanceLimit</h4>
<pre>public&nbsp;int&nbsp;getInstanceLimit()</pre>
<div class="block">Gets the maximal number of instances that can exist at any time.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the maximum number of instances or <= 0 if unlimitied</dd>
</dl>
</li>
</ul>
<a name="getInstanceCount--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInstanceCount</h4>
<pre>public&nbsp;int&nbsp;getInstanceCount()</pre>
<div class="block">Gets the current number of created instances.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the current number of instances created</dd>
</dl>
</li>
</ul>
<a name="createInstance-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createInstance</h4>
<pre>public&nbsp;java.lang.Object&nbsp;createInstance(boolean&nbsp;ignoreInstanceCount)
throws UnavailableException</pre>
<div class="block">Creates a new mdb instance preforming all necessary lifecycle callbacks</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ignoreInstanceCount</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a new message driven bean instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>UnavailableException</code> - if the instance limit has been exceeded or
if an exception occurs while creating the bean instance</dd>
</dl>
</li>
</ul>
<a name="freeInstance-org.apache.openejb.core.mdb.Instance-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>freeInstance</h4>
<pre>public&nbsp;void&nbsp;freeInstance(<a href="../../../../../org/apache/openejb/core/mdb/Instance.html" title="class in org.apache.openejb.core.mdb">Instance</a>&nbsp;instance,
boolean&nbsp;ignoredInstanceCount)</pre>
<div class="block">Frees an instance no longer needed by the resource adapter. This method makes all the necessary lifecycle
callbacks and decrements the instance count. This method should not be used to disposed of beans that have
thrown a system exception. Instead the discardInstance method should be called.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>instance</code> - the bean instance to free</dd>
<dd><code>ignoredInstanceCount</code> - </dd>
</dl>
</li>
</ul>
<a name="recreateInstance-java.lang.Object-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>recreateInstance</h4>
<pre>public&nbsp;java.lang.Object&nbsp;recreateInstance(java.lang.Object&nbsp;bean)
throws UnavailableException</pre>
<div class="block">Recreates a bean instance that has thrown a system exception. As required by the EJB specification, lifecycle
callbacks are not invoked. To normally free a bean instance call the freeInstance method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bean</code> - the bean instance to discard</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the new replacement bean instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>UnavailableException</code></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/core/mdb/MdbContext.html" title="class in org.apache.openejb.core.mdb"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/openejb/core/mdb/MdbInstanceManager.html" title="class in org.apache.openejb.core.mdb"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/openejb/core/mdb/MdbInstanceFactory.html" target="_top">Frames</a></li>
<li><a href="MdbInstanceFactory.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>Nested&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>