blob: e7dc6699d80b409c36eb8c414d2d9480715eeb94 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.14.1) on Mon Apr 04 09:09:38 CDT 2022 -->
<title>ContextFactory (Eclipse Jetty API Doc - v10.0.9)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2022-04-04">
<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="ContextFactory (Eclipse Jetty API Doc - v10.0.9)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":10,"i6":10,"i7":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 = true;
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/ContextFactory.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>
<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>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 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.eclipse.jetty.jndi</a></div>
<h2 title="Class ContextFactory" class="title">Class ContextFactory</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.jndi.ContextFactory</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>javax.naming.spi.ObjectFactory</code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">ContextFactory</span>
extends java.lang.Object
implements javax.naming.spi.ObjectFactory</pre>
<div class="block">ContextFactory
<p>
This is an object factory that produces a jndi naming
context based on a classloader.
<p>
It is used for the <code>java:comp</code> context.
<p>
This object factory is bound at <code>java:comp</code>. When a
lookup arrives for java:comp, this object factory
is invoked and will return a context specific to
the caller's environment (so producing the <code>java:comp/env</code>
specific to a webapp).
<p>
The context selected is based on classloaders. First
we try looking at the thread context classloader if it is set, and walk its
hierarchy, creating a context if none is found. If the thread context classloader
is not set, then we use the classloader associated with the current Context.
<p>
If there is no current context, or no classloader, we return null.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">ContextFactory</a></span>()</code></th>
<td class="colLast">&nbsp;</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 java.lang.ClassLoader</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#associateClassLoader(java.lang.ClassLoader)">associateClassLoader</a></span>&#8203;(java.lang.ClassLoader&nbsp;loader)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static javax.naming.Context</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#associateContext(javax.naming.Context)">associateContext</a></span>&#8203;(javax.naming.Context&nbsp;ctx)</code></th>
<td class="colLast">
<div class="block">Associate the given Context with the current thread.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#disassociateClassLoader()">disassociateClassLoader</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#disassociateContext(javax.naming.Context)">disassociateContext</a></span>&#8203;(javax.naming.Context&nbsp;ctx)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dump(java.lang.Appendable,java.lang.String)">dump</a></span>&#8203;(java.lang.Appendable&nbsp;out,
java.lang.String&nbsp;indent)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>javax.naming.Context</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getContextForClassLoader(java.lang.ClassLoader)">getContextForClassLoader</a></span>&#8203;(java.lang.ClassLoader&nbsp;loader)</code></th>
<td class="colLast">
<div class="block">Find the naming Context for the given classloader</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getObjectInstance(java.lang.Object,javax.naming.Name,javax.naming.Context,java.util.Hashtable)">getObjectInstance</a></span>&#8203;(java.lang.Object&nbsp;obj,
javax.naming.Name&nbsp;name,
javax.naming.Context&nbsp;nameCtx,
java.util.Hashtable&nbsp;env)</code></th>
<td class="colLast">
<div class="block">Find or create a context which pertains to a classloader.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="NamingContext.html" title="class in org.eclipse.jetty.jndi">NamingContext</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newNamingContext(java.lang.Object,java.lang.ClassLoader,java.util.Hashtable,javax.naming.Name,javax.naming.Context)">newNamingContext</a></span>&#8203;(java.lang.Object&nbsp;obj,
java.lang.ClassLoader&nbsp;loader,
java.util.Hashtable&nbsp;env,
javax.naming.Name&nbsp;name,
javax.naming.Context&nbsp;parentCtx)</code></th>
<td class="colLast">
<div class="block">Create a new NamingContext.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="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>
</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;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ContextFactory</h4>
<pre>public&nbsp;ContextFactory()</pre>
</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="getObjectInstance(java.lang.Object,javax.naming.Name,javax.naming.Context,java.util.Hashtable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getObjectInstance</h4>
<pre class="methodSignature">public&nbsp;java.lang.Object&nbsp;getObjectInstance&#8203;(java.lang.Object&nbsp;obj,
javax.naming.Name&nbsp;name,
javax.naming.Context&nbsp;nameCtx,
java.util.Hashtable&nbsp;env)
throws java.lang.Exception</pre>
<div class="block">Find or create a context which pertains to a classloader.
<p>
If the thread context classloader is set, we try to find an already-created naming context
for it. If one does not exist, we walk its classloader hierarchy until one is found, or we
run out of parent classloaders. In the latter case, we will create a new naming context associated
with the original thread context classloader.
<p>
If the thread context classloader is not set, we obtain the classloader from the current
jetty Context, and look for an already-created naming context.
<p>
If there is no current jetty Context, or it has no associated classloader, we
return null.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getObjectInstance</code>&nbsp;in interface&nbsp;<code>javax.naming.spi.ObjectFactory</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>ObjectFactory.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable)</code></dd>
</dl>
</li>
</ul>
<a id="newNamingContext(java.lang.Object,java.lang.ClassLoader,java.util.Hashtable,javax.naming.Name,javax.naming.Context)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newNamingContext</h4>
<pre class="methodSignature">public&nbsp;<a href="NamingContext.html" title="class in org.eclipse.jetty.jndi">NamingContext</a>&nbsp;newNamingContext&#8203;(java.lang.Object&nbsp;obj,
java.lang.ClassLoader&nbsp;loader,
java.util.Hashtable&nbsp;env,
javax.naming.Name&nbsp;name,
javax.naming.Context&nbsp;parentCtx)
throws java.lang.Exception</pre>
<div class="block">Create a new NamingContext.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>obj</code> - the object to create</dd>
<dd><code>loader</code> - the classloader for the naming context</dd>
<dd><code>env</code> - the jndi env for the entry</dd>
<dd><code>name</code> - the name of the entry</dd>
<dd><code>parentCtx</code> - the parent context of the entry</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the newly created naming context</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to create a new naming context</dd>
</dl>
</li>
</ul>
<a id="getContextForClassLoader(java.lang.ClassLoader)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContextForClassLoader</h4>
<pre class="methodSignature">public&nbsp;javax.naming.Context&nbsp;getContextForClassLoader&#8203;(java.lang.ClassLoader&nbsp;loader)</pre>
<div class="block">Find the naming Context for the given classloader</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loader</code> - the classloader for the context</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the context for the classloader</dd>
</dl>
</li>
</ul>
<a id="associateContext(javax.naming.Context)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>associateContext</h4>
<pre class="methodSignature">public static&nbsp;javax.naming.Context&nbsp;associateContext&#8203;(javax.naming.Context&nbsp;ctx)</pre>
<div class="block">Associate the given Context with the current thread.
disassociate method should be called to reset the context.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ctx</code> - the context to associate to the current thread.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the previous context associated on the thread (can be null)</dd>
</dl>
</li>
</ul>
<a id="disassociateContext(javax.naming.Context)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>disassociateContext</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;disassociateContext&#8203;(javax.naming.Context&nbsp;ctx)</pre>
</li>
</ul>
<a id="associateClassLoader(java.lang.ClassLoader)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>associateClassLoader</h4>
<pre class="methodSignature">public static&nbsp;java.lang.ClassLoader&nbsp;associateClassLoader&#8203;(java.lang.ClassLoader&nbsp;loader)</pre>
</li>
</ul>
<a id="disassociateClassLoader()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>disassociateClassLoader</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;disassociateClassLoader()</pre>
</li>
</ul>
<a id="dump(java.lang.Appendable,java.lang.String)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>dump</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;dump&#8203;(java.lang.Appendable&nbsp;out,
java.lang.String&nbsp;indent)
throws java.io.IOException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</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/ContextFactory.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>
<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>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 id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2022 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>