uTools-Manuals/docs/java/javax/management/loading/ClassLoaderRepository.html

186 lines
13 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
compact3
</div>
<div class="subTitle">
javax.management.loading
</div>
<h2 class="title" title="Interface ClassLoaderRepository">Interface ClassLoaderRepository</h2>
</div><div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr/> <br/> <pre>public interface <span class="typeNameLabel">ClassLoaderRepository</span></pre>
<div class="block">
<p> <span>此接口的实例用于保留在MBean服务器中注册的ClassLoaders列表。</span> <span>它们提供了使用注册的ClassLoaders加载类的必要方法。</span> </p>
<p> <span>ClassLoaderRepository中的第一个<code>ClassLoaderRepository</code>始终是MBean服务器自己的ClassLoader。</span> </p>
<p> <span>当一个MBean在MBean服务器中注册时如果它是<a href="../../../java/lang/ClassLoader.html" title="java.lang中的类"><code>ClassLoader</code></a>的子类,并且如果没有实现接口<a href="../../../javax/management/loading/PrivateClassLoader.html" title="javax.management.loading中的接口"><code>PrivateClassLoader</code></a> 则将其添加到MBean Server <code>ClassLoaderRepository</code><code>ClassLoaderRepository</code></span> <span>如果随后从MBean服务器注销它是从去除<code>ClassLoaderRepository</code></span> </p>
<p> <span><code>ClassLoaderRepository</code>中的MBean的<code>ClassLoaderRepository</code>是重要的。</span> <span>对于<code>ClassLoaderRepository</code>中的任何两个MBean <em>X</em><em>Y</em> ,如果<em>X</em>的注册在<em>Y的注册</em>开始之前<code>ClassLoaderRepository</code> <em>X</em>必须出现在<em>Y</em>之前。</span> <span>如果<em>X</em><em>Y</em>同时注册,其顺序是不确定的。</span> <span>一个MBean的注册对应于所述呼叫到<a href="../../../javax/management/MBeanServer.html#registerMBean-java.lang.Object-javax.management.ObjectName-"><code>MBeanServer.registerMBean(java.lang.Object, javax.management.ObjectName)</code></a>或的一个<a href="../../../javax/management/MBeanServer.html" title="javax.management中的接口"><code>MBeanServer</code></a> <code>.createMBean</code>方法。</span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.5
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/management/MBeanServerFactory.html" title="javax.management中的类"><code>MBeanServerFactory</code></a></span>
</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>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t3"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code><a href="../../../java/lang/Class.html" title="class in java.lang"></a>&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/management/loading/ClassLoaderRepository.html#loadClass-java.lang.String-">loadClass</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> className)</code>
<div class="block">
通过类加载器列表加载给定的类名。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code><a href="../../../java/lang/Class.html" title="class in java.lang"></a>&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/management/loading/ClassLoaderRepository.html#loadClassBefore-java.lang.ClassLoader-java.lang.String-">loadClassBefore</a></span>(<a href="../../../java/lang/ClassLoader.html" title="class in java.lang">ClassLoader</a> stop, <a href="../../../java/lang/String.html" title="class in java.lang">String</a> className)</code>
<div class="block">
通过加载器列表加载给定的类名,停止在给定的类名称。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code><a href="../../../java/lang/Class.html" title="class in java.lang"></a>&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/management/loading/ClassLoaderRepository.html#loadClassWithout-java.lang.ClassLoader-java.lang.String-">loadClassWithout</a></span>(<a href="../../../java/lang/ClassLoader.html" title="class in java.lang">ClassLoader</a> exclude, <a href="../../../java/lang/String.html" title="class in java.lang">String</a> className)</code>
<div class="block">
通过类加载器列表加载给定的类名,不包括给定的类名。
</div> </td>
</tr>
</tbody>
</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>方法详细信息</h3> <a name="loadClass-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>loadClass</h4> <pre><a href="../../../java/lang/Class.html" title="class in java.lang"></a>&lt;?&gt; loadClass(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> className)
throws <a href="../../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></pre>
<div class="block">
<p> <span>通过类加载器列表加载给定的类名。</span> <span>要求ClassLoaderRepository中的每个ClassLoader通过其<a href="../../../java/lang/ClassLoader.html#loadClass-java.lang.String-"><code>ClassLoader.loadClass(String)</code></a>方法加载该类。</span> <span>如果它成功返回一个<a href="../../../java/lang/Class.html" title="java.lang中的类"><code></code></a>对象,那就是这个方法的结果。</span> <span>如果它抛出一个<a href="../../../java/lang/ClassNotFoundException.html" title="java.lang中的类"><code>ClassNotFoundException</code></a> 搜索继续下一个ClassLoader。</span> <span>如果它引发另一个异常,则从该方法传播异常。</span> <span>如果达到列表的<a href="../../../java/lang/ClassNotFoundException.html" title="java.lang中的类">末尾</a> ,则会抛出一个<a href="../../../java/lang/ClassNotFoundException.html" title="java.lang中的类"><code>ClassNotFoundException</code></a></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>className</code> - 要加载的类的名称。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
加载类。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></code> - 找不到指定的类。
</dd>
</dl> </li>
</ul> <a name="loadClassWithout-java.lang.ClassLoader-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>loadClassWithout</h4> <pre><a href="../../../java/lang/Class.html" title="class in java.lang"></a>&lt;?&gt; loadClassWithout(<a href="../../../java/lang/ClassLoader.html" title="class in java.lang">ClassLoader</a> exclude,
<a href="../../../java/lang/String.html" title="class in java.lang">String</a> className)
throws <a href="../../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></pre>
<div class="block">
<p> <span>通过类加载器列表加载给定的类名,不包括给定的类名。</span> <span>来自ClassLoaderRepository的除了<code>exclude</code>之外的每个ClassLoader都被要求通过其<a href="../../../java/lang/ClassLoader.html#loadClass-java.lang.String-"><code>ClassLoader.loadClass(String)</code></a>方法加载该类。</span> <span>如果它成功返回一个<a href="../../../java/lang/Class.html" title="java.lang中的类"><code></code></a>对象,那就是这个方法的结果。</span> <span>如果它抛出一个<a href="../../../java/lang/ClassNotFoundException.html" title="java.lang中的类"><code>ClassNotFoundException</code></a> 继续搜索下一个ClassLoader。</span> <span>如果它引发另一个异常,则从该方法传播异常。</span> <span>如果达到列表的末尾,则抛出一个<a href="../../../java/lang/ClassNotFoundException.html" title="java.lang中的类"><code>ClassNotFoundException</code></a></span> </p>
<p> <span>请注意如果ClassLoaderRepository中的ClassLoader从其<a href="../../../java/lang/ClassLoader.html#loadClass-java.lang.String-"><code>loadClass</code></a>方法调用此方法则如果ClassLoaderRepository中的另一个ClassLoader在同一时间执行相同操作则会将其暴露为死锁。</span> <span>建议使用<a href="../../../javax/management/loading/ClassLoaderRepository.html#loadClassBefore-java.lang.ClassLoader-java.lang.String-"><code>loadClassBefore(java.lang.ClassLoader, java.lang.String)</code></a>方法以避免死锁的危险。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>className</code> - 要加载的类的名称。
</dd>
<dd>
<span><code>exclude</code> - 要排除的类加载器。</span>
<span>可能为null在这种情况下此方法相当于<a href="../../../javax/management/loading/ClassLoaderRepository.html#loadClass-java.lang.String-"><code>loadClass(className)</code></a></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
加载类。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></code> - 找不到指定的类。
</dd>
</dl> </li>
</ul> <a name="loadClassBefore-java.lang.ClassLoader-java.lang.String-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>loadClassBefore</h4> <pre><a href="../../../java/lang/Class.html" title="class in java.lang"></a>&lt;?&gt; loadClassBefore(<a href="../../../java/lang/ClassLoader.html" title="class in java.lang">ClassLoader</a> stop,
<a href="../../../java/lang/String.html" title="class in java.lang">String</a> className)
throws <a href="../../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></pre>
<div class="block">
<p> <span>通过加载器列表加载给定的类名,停止在给定的类名称。</span> <span>要求ClassLoaderRepository中的每个ClassLoader通过其<a href="../../../java/lang/ClassLoader.html#loadClass-java.lang.String-"><code>ClassLoader.loadClass(String)</code></a>方法加载该类。</span> <span>如果它成功返回一个<a href="../../../java/lang/Class.html" title="java.lang中的类"><code></code></a>对象,那就是这个方法的结果。</span> <span>如果它抛出一个<a href="../../../java/lang/ClassNotFoundException.html" title="java.lang中的类"><code>ClassNotFoundException</code></a> 搜索继续下一个ClassLoader。</span> <span>如果它引发另一个异常,则从该方法传播异常。</span> <span>如果搜索到达<code>stop</code>或列表的<a href="../../../java/lang/ClassNotFoundException.html" title="java.lang中的类">末尾</a> ,则会抛出一个<a href="../../../java/lang/ClassNotFoundException.html" title="java.lang中的类"><code>ClassNotFoundException</code></a></span> </p>
<p> <span>通常,这种方法是从所谓<a href="../../../java/lang/ClassLoader.html#loadClass-java.lang.String-"><code>loadClass</code></a>的方法<code>stop</code> ,咨询,在出现在它之前装载机<code>ClassLoaderRepository</code></span> <span>通过达到<code>stop</code>停止搜索,避免了并发类加载的潜在死锁。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>className</code> - 要加载的类的名称。
</dd>
<dd>
<span><code>stop</code> - 要停止的类加载器。</span>
<span>可能为null在这种情况下此方法相当于<a href="../../../javax/management/loading/ClassLoaderRepository.html#loadClass-java.lang.String-"><code>loadClass(className)</code></a></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
加载类。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></code> - 找不到指定的类。
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>