<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_252) on Fri Jul 16 09:39:10 UTC 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SequencingControl (EclipseLink 3.0.2, API Reference)</title>
<meta name="date" content="2021-07-16">
<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="SequencingControl (EclipseLink 3.0.2, API Reference)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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 class="aboutLanguage">EclipseLink 3.0.2, API Reference</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/eclipse/persistence/sequencing/Sequence.html" title="class in org.eclipse.persistence.sequencing"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/eclipse/persistence/sequencing/StandardSequence.html" title="class in org.eclipse.persistence.sequencing"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/eclipse/persistence/sequencing/SequencingControl.html" target="_top">Frames</a></li>
<li><a href="SequencingControl.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>Constr&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>Constr&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.eclipse.persistence.sequencing</div>
<h2 title="Interface SequencingControl" class="title">Interface SequencingControl</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public interface <span class="typeNameLabel">SequencingControl</span></pre>
<div class="block"><p>
 <b>Purpose</b>: Define an interface to control sequencing functionality.
 <p>
 <b>Description</b>:  This interface is accessed through DatabaseSession.getSequencingControl().
 It allows to create, re-create, customize Sequencing object
 which is available through DatabaseSession.getSequencing()
 and provides sequencing values for all descriptors that use sequencing.

 Here's the lifecycle of Sequencing object used by DatabaseSession:
 1. DatabaseSession created - sequencing object doesn't yet exist;
 2. DatabaseSession.login() causes creation of Sequencing object;
 3. DatabaseSession.logout() causes destruction of Sequencing object.

 In case sequencing object doesn't yet exist all the set parameters' values will be used
 during its creation.

 In case sequencing object already exists:
 1. The following methods don't alter sequencing object - the corresponding parameters will only
    be used in case a new sequencing object is created:
      setShouldUseSeparateConnection;
      setLogin;
      setMinPoolSize;
      setMaxPoolSize.
 2. The following methods cause immediate destruction of the sequencing object and creation of a new one:
      setValueGenerationPolicy;
      setShouldUseNativeSequencing;
      setShouldUseTableSequencing;
      resetSequencing;
 3. The following methods cause change immediately:
      setPreallocationSize (next sequencing preallocation will use the set parameter's value).
 <p>
 <b>Responsibilities</b>:
 <ul>
 <li> Define the APIs for controlling sequencing.
 </ul></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sequencing/Sequence.html" title="class in org.eclipse.persistence.sequencing"><code>Sequence</code></a>, 
<a href="../../../../org/eclipse/persistence/sessions/DatabaseSession.html" title="interface in org.eclipse.persistence.sessions"><code>DatabaseSession</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== 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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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><a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server">ConnectionPool</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#getConnectionPool--">getConnectionPool</a></span>()</code>
<div class="block">ADVANCED:
 Return the connection pool to use for sequencing.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/sessions/Login.html" title="interface in org.eclipse.persistence.sessions">Login</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#getLogin--">getLogin</a></span>()</code>
<div class="block">ADVANCED:
 Return a DatabaseLogin to be used by separate sequencing connection(s).</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/eclipse/persistence/sequencing/SequencingControl.html#getMaxPoolSize--">getMaxPoolSize</a></span>()</code>
<div class="block">PUBLIC:
 Returns a maximum number of connections in sequencing connection pool</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/eclipse/persistence/sequencing/SequencingControl.html#getMinPoolSize--">getMinPoolSize</a></span>()</code>
<div class="block">PUBLIC:
 Returns a minimum number of connections in sequencing connection pool.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#initializePreallocated--">initializePreallocated</a></span>()</code>
<div class="block">ADVANCED:
 Removes all preallocated sequencing objects.</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/eclipse/persistence/sequencing/SequencingControl.html#initializePreallocated-java.lang.String-">initializePreallocated</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;seqName)</code>
<div class="block">ADVANCED:
 Removes all preallocated sequencing objects for the given sequence name.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#isConnectedUsingSeparateConnection--">isConnectedUsingSeparateConnection</a></span>()</code>
<div class="block">PUBLIC:
 Indicates whether sequencing actually uses separate connection(s).</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#resetSequencing--">resetSequencing</a></span>()</code>
<div class="block">ADVANCED:
 Immediately re-create sequencing object.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#setConnectionPool-org.eclipse.persistence.sessions.server.ConnectionPool-">setConnectionPool</a></span>(<a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server">ConnectionPool</a>&nbsp;pool)</code>
<div class="block">ADVANCED:
 Set the connection pool to use for sequencing.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#setInitialPoolSize-int-">setInitialPoolSize</a></span>(int&nbsp;size)</code>
<div class="block">PUBLIC:
 Sets a initial number of connections in sequencing connection pool
 The set value is ignored if shouldUseSeparateConnection() returns false.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#setLogin-org.eclipse.persistence.sessions.Login-">setLogin</a></span>(<a href="../../../../org/eclipse/persistence/sessions/Login.html" title="interface in org.eclipse.persistence.sessions">Login</a>&nbsp;login)</code>
<div class="block">ADVANCED:
 Returns a DatabaseLogin to be used by separate sequencing connection(s)
 The set value is ignored if shouldUseSeparateConnection() returns false.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#setMaxPoolSize-int-">setMaxPoolSize</a></span>(int&nbsp;size)</code>
<div class="block">PUBLIC:
 Sets a maximum number of connections in sequencing connection pool
 The set value is ignored if shouldUseSeparateConnection() returns false.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#setMinPoolSize-int-">setMinPoolSize</a></span>(int&nbsp;size)</code>
<div class="block">PUBLIC:
 Sets a minimum number of connections in sequencing connection pool
 The set value is ignored if shouldUseSeparateConnection() returns false.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#setShouldUseSeparateConnection-boolean-">setShouldUseSeparateConnection</a></span>(boolean&nbsp;shouldUseSeparateConnection)</code>
<div class="block">PUBLIC:
 Set whether separate connection(s) for sequencing could be used
 (by default it couldn't).</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/sequencing/SequencingControl.html#shouldUseSeparateConnection--">shouldUseSeparateConnection</a></span>()</code>
<div class="block">PUBLIC:
 Indicate whether separate connection(s) for sequencing could be used
 (by default it couldn't).</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="resetSequencing--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resetSequencing</h4>
<pre>void&nbsp;resetSequencing()</pre>
<div class="block">ADVANCED:
 Immediately re-create sequencing object.
 The only reason to use this method is to pick up all parameters'
 values that were changed after the original sequencing object has been created.</div>
</li>
</ul>
<a name="shouldUseSeparateConnection--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shouldUseSeparateConnection</h4>
<pre>boolean&nbsp;shouldUseSeparateConnection()</pre>
<div class="block">PUBLIC:
 Indicate whether separate connection(s) for sequencing could be used
 (by default it couldn't).
 If this flag is set to true then separate connection(s) for sequencing
 will be used in case getSequence().shouldUseSeparateConnection()
 returns true.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sequencing/Sequence.html" title="class in org.eclipse.persistence.sequencing"><code>Sequence</code></a></dd>
</dl>
</li>
</ul>
<a name="setShouldUseSeparateConnection-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setShouldUseSeparateConnection</h4>
<pre>void&nbsp;setShouldUseSeparateConnection(boolean&nbsp;shouldUseSeparateConnection)</pre>
<div class="block">PUBLIC:
 Set whether separate connection(s) for sequencing could be used
 (by default it couldn't).
 If this flag is set to true then separate connection(s) for sequencing
 will be used in case getSequence().shouldUseSeparateConnection()
 returns true.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sequencing/Sequence.html" title="class in org.eclipse.persistence.sequencing"><code>Sequence</code></a></dd>
</dl>
</li>
</ul>
<a name="isConnectedUsingSeparateConnection--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isConnectedUsingSeparateConnection</h4>
<pre>boolean&nbsp;isConnectedUsingSeparateConnection()</pre>
<div class="block">PUBLIC:
 Indicates whether sequencing actually uses separate connection(s).
 Returns true if sequencing is connected and uses separate connection(s).
 Returns false if sequencing is not connected (getSequencing()==null).
 Note that if shouldUseSeparateConnection() returns false this method also returns false.
 However if shouldUseSeparateConnection() returns true this method
 returns false in the following two cases:
 <br>sequencing is not connected;
 <br>getSequence().shouldUseSeparateConnection() == false.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sequencing/Sequence.html" title="class in org.eclipse.persistence.sequencing"><code>Sequence</code></a></dd>
</dl>
</li>
</ul>
<a name="getLogin--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLogin</h4>
<pre><a href="../../../../org/eclipse/persistence/sessions/Login.html" title="interface in org.eclipse.persistence.sessions">Login</a>&nbsp;getLogin()</pre>
<div class="block">ADVANCED:
 Return a DatabaseLogin to be used by separate sequencing connection(s).</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sessions/DatabaseLogin.html" title="class in org.eclipse.persistence.sessions"><code>DatabaseLogin</code></a></dd>
</dl>
</li>
</ul>
<a name="setLogin-org.eclipse.persistence.sessions.Login-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLogin</h4>
<pre>void&nbsp;setLogin(<a href="../../../../org/eclipse/persistence/sessions/Login.html" title="interface in org.eclipse.persistence.sessions">Login</a>&nbsp;login)</pre>
<div class="block">ADVANCED:
 Returns a DatabaseLogin to be used by separate sequencing connection(s)
 The set value is ignored if shouldUseSeparateConnection() returns false.
 The DatabaseLogin *MUST*:
 1. specify *NON-JTS* connections (such as NON_JTS driver or read-only datasource);
 2. sequenceLogin.shouldUseExternalTransactionController()==false
 In case this method is not called, but separate connection should be used,
 sequencing will use a clone of login owned by the DatabaseSession,
 or a clone of read login owned by ServerSession.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sessions/DatabaseLogin.html" title="class in org.eclipse.persistence.sessions"><code>DatabaseLogin</code></a></dd>
</dl>
</li>
</ul>
<a name="getConnectionPool--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnectionPool</h4>
<pre><a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server">ConnectionPool</a>&nbsp;getConnectionPool()</pre>
<div class="block">ADVANCED:
 Return the connection pool to use for sequencing.</div>
</li>
</ul>
<a name="setConnectionPool-org.eclipse.persistence.sessions.server.ConnectionPool-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setConnectionPool</h4>
<pre>void&nbsp;setConnectionPool(<a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server">ConnectionPool</a>&nbsp;pool)</pre>
<div class="block">ADVANCED:
 Set the connection pool to use for sequencing.</div>
</li>
</ul>
<a name="getMinPoolSize--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMinPoolSize</h4>
<pre>int&nbsp;getMinPoolSize()</pre>
<div class="block">PUBLIC:
 Returns a minimum number of connections in sequencing connection pool.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server"><code>ConnectionPool</code></a>, 
<a href="../../../../org/eclipse/persistence/sessions/server/ServerSession.html" title="class in org.eclipse.persistence.sessions.server"><code>ServerSession</code></a></dd>
</dl>
</li>
</ul>
<a name="setMinPoolSize-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMinPoolSize</h4>
<pre>void&nbsp;setMinPoolSize(int&nbsp;size)</pre>
<div class="block">PUBLIC:
 Sets a minimum number of connections in sequencing connection pool
 The set value is ignored if shouldUseSeparateConnection() returns false.
 The set value is ignored if SequencingControl has been obtained not from ServerSession.
 By default is 2.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server"><code>ConnectionPool</code></a>, 
<a href="../../../../org/eclipse/persistence/sessions/server/ServerSession.html" title="class in org.eclipse.persistence.sessions.server"><code>ServerSession</code></a></dd>
</dl>
</li>
</ul>
<a name="getMaxPoolSize--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaxPoolSize</h4>
<pre>int&nbsp;getMaxPoolSize()</pre>
<div class="block">PUBLIC:
 Returns a maximum number of connections in sequencing connection pool</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server"><code>ConnectionPool</code></a>, 
<a href="../../../../org/eclipse/persistence/sessions/server/ServerSession.html" title="class in org.eclipse.persistence.sessions.server"><code>ServerSession</code></a></dd>
</dl>
</li>
</ul>
<a name="setMaxPoolSize-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMaxPoolSize</h4>
<pre>void&nbsp;setMaxPoolSize(int&nbsp;size)</pre>
<div class="block">PUBLIC:
 Sets a maximum number of connections in sequencing connection pool
 The set value is ignored if shouldUseSeparateConnection() returns false.
 The set value is ignored if SequencingControl has been obtained not from ServerSession.
 By default is 2.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server"><code>ConnectionPool</code></a>, 
<a href="../../../../org/eclipse/persistence/sessions/server/ServerSession.html" title="class in org.eclipse.persistence.sessions.server"><code>ServerSession</code></a></dd>
</dl>
</li>
</ul>
<a name="setInitialPoolSize-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setInitialPoolSize</h4>
<pre>void&nbsp;setInitialPoolSize(int&nbsp;size)</pre>
<div class="block">PUBLIC:
 Sets a initial number of connections in sequencing connection pool
 The set value is ignored if shouldUseSeparateConnection() returns false.
 The set value is ignored if SequencingControl has been obtained not from ServerSession.
 By default is 1.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sessions/server/ConnectionPool.html" title="class in org.eclipse.persistence.sessions.server"><code>ConnectionPool</code></a>, 
<a href="../../../../org/eclipse/persistence/sessions/server/ServerSession.html" title="class in org.eclipse.persistence.sessions.server"><code>ServerSession</code></a></dd>
</dl>
</li>
</ul>
<a name="initializePreallocated--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initializePreallocated</h4>
<pre>void&nbsp;initializePreallocated()</pre>
<div class="block">ADVANCED:
 Removes all preallocated sequencing objects.
 Ignored if getSequencingValueGenarationPolicy().shouldUsePreallocation() returns false.
 This method is called internally after Sequencing object is destructed.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sequencing/Sequence.html" title="class in org.eclipse.persistence.sequencing"><code>Sequence</code></a></dd>
</dl>
</li>
</ul>
<a name="initializePreallocated-java.lang.String-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>initializePreallocated</h4>
<pre>void&nbsp;initializePreallocated(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;seqName)</pre>
<div class="block">ADVANCED:
 Removes all preallocated sequencing objects for the given sequence name.
 Ignored if getSequencingValueGenarationPolicy().shouldUsePreallocation() returns false.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/sequencing/Sequence.html" title="class in org.eclipse.persistence.sequencing"><code>Sequence</code></a></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 class="aboutLanguage">EclipseLink 3.0.2, API Reference</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/eclipse/persistence/sequencing/Sequence.html" title="class in org.eclipse.persistence.sequencing"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/eclipse/persistence/sequencing/StandardSequence.html" title="class in org.eclipse.persistence.sequencing"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/eclipse/persistence/sequencing/SequencingControl.html" target="_top">Frames</a></li>
<li><a href="SequencingControl.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>Constr&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>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2021 <a href="http://www.eclipse.org/eclipselink">Eclipse.org - EclipseLink Project</a>. All rights reserved.</small></p>
</body>
</html>
