<!--

    Copyright (c) 2005, 2018 Oracle and/or its affiliates. All rights reserved.
    Copyright (c) 2021 Contributors to the Eclipse Foundation

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<p><a id="ref-scheduledexecutorservicenew" name="ref-scheduledexecutorservicenew"></a><a id="GHCON148" name="GHCON148"></a></p>

<h4>New Managed Scheduled Executor Service<a id="sthref38" name="sthref38"></a></h4>
<a name="BEGIN" id="BEGIN"></a>
<p>Use the New Managed Scheduled Executor Service page to create a managed scheduled executor service resource.</p>
<p>The New Managed Scheduled Executor Service page contains the following options.</p>
<dl>
<dt>JNDI Name</dt>
<dd>
<p>A unique JNDI name that identifies the resource. By convention, the name begins with a resource-type indicator and a slash, such as concurrent/, jdbc/, or jms/.</p>
</dd>
<dt>Context Information</dt>
<dd>
<p>The contexts to propagate to threads: Classloader, JNDI, Security, or WorkArea. Context propagation can be enabled or disabled. If enabled, the selected contexts are propagated. If disabled, none of the contexts are propagated, even if they are selected. The default value is Enabled, with all four contexts selected.</p>
</dd>
<dt>Status</dt>
<dd>
<p>The status of the resource. The resource can be enabled or disabled. The default value is Enabled.</p>
</dd>
<dt>Thread Priority</dt>
<dd>
<p>The priority to assign to created threads. The default value is 5.</p>
</dd>
<dt>Long-Running Tasks</dt>
<dd>
<p>Whether the resource should be used for long-running tasks. If enabled, long-running tasks are not reported as stuck. This option is disabled by default.</p>
</dd>
<dt>Hung After</dt>
<dd>
<p>The number of seconds tasks can execute before they are considered unresponsive. The default value is 0.</p>
</dd>
<dt>Hung Logger Print Once</dt>
<dd>
<p>Specifies whether to print the warning message once or repeatedly. The default value is false. If set to true, the warning message is printed only once when detect a hung task exceeds "Hung After".</p>
</dd>
<dt>Hung Logger Initial Delay</dt>
<dd>
<p>The number of seconds to delay logging the detection of hung tasks. The default value is 60.</p>
</dd>
<dt>Hung Logger Interval</dt>
<dd>
<p>The number of seconds between logging the detection of hung tasks. The default value is 60.</p>
</dd>
<dt>Description</dt>
<dd>
<p>A description of this resource.</p>
</dd>
<dt>Core Size</dt>
<dd>
<p>The number of threads to keep in a thread pool. The default value is 0.</p>
</dd>
<dt>Keep Alive</dt>
<dd>
<p>The number of seconds threads can remain idle when the number of threads is greater than core size. The default value is 60.</p>
</dd>
<dt>Thread Lifetime</dt>
<dd>
<p>The number of seconds threads can remain in a thread pool before being purged, regardless of whether the number of threads is greater than core size or whether the threads are idle. The default value is 0.</p>
</dd>
<dt>Additional Properties</dt>
<dd>
<p>Additional properties for the resource. GlassFish Server does not define any additional properties for this resource type. Moreover, this resource type does not currently use any additional properties.</p>
</dd>
<dt>Targets</dt>
<dd>
<p>(This option is displayed if any clusters or standalone instances have been created in the domain.)</p>
<p>Clusters and standalone instances for the resource. Move desired targets to the Selected Targets column using the Add and Add All buttons. Move any unneeded targets to the Available Targets column using the Remove and Remove All buttons.</p>
</dd>
</dl>
<a id="sthref39" name="sthref39"></a>
<h5>Related Tasks</h5>
<ul>
<li>
<p><a href="task-managedscheduledexecutorservicecreate.html">To Create a Managed Scheduled Executor Service</a></p>
</li>
<li>
<p><a href="task-managedscheduledexecutorserviceedit.html">To Edit a Managed Scheduled Executor Service</a></p>
</li>
<li>
<p><a href="task-managedscheduledexecutorservicedelete.html">To Delete a Managed Scheduled Executor Service</a></p>
</li>
</ul>
<a id="GHCON149" name="GHCON149"></a>
<h5>Related asadmin Commands</h5>
<ul>
<li>
<p><a href="http://www.oracle.com/pls/topic/lookup?ctx=E26576_01&id=GSRFM680"><code>create-managed-scheduled-executor-service</code>(1)</a></p>
</li>
<li>
<p><a href="http://www.oracle.com/pls/topic/lookup?ctx=E26576_01&id=GSRFM873"><code>list-managed-scheduled-executor-services</code>(1)</a></p>
</li>
<li>
<p><a href="http://www.oracle.com/pls/topic/lookup?ctx=E26576_01&id=GSRFM850"><code>delete-managed-scheduled-executor-service</code>(1)</a></p>
</li>
</ul>


<small>Copyright &#169; 2005, 2017, Oracle and/or its affiliates. All rights reserved. <a href="docinfo.html">Legal Notices</a></small>
