mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-07-08 02:32:46 +08:00
145 lines
9.0 KiB
HTML
145 lines
9.0 KiB
HTML
<div class="header">
|
||
<div class="subTitle">
|
||
org.omg.PortableInterceptor
|
||
</div>
|
||
<h2 class="title" title="Interface ORBInitializerOperations">Interface ORBInitializerOperations</h2>
|
||
</div><div class="contentContainer">
|
||
<div class="description">
|
||
<ul class="blockList">
|
||
<li class="blockList">
|
||
<dl>
|
||
<dt>
|
||
All Known Subinterfaces:
|
||
</dt>
|
||
<dd>
|
||
<span><a href="../../../org/omg/PortableInterceptor/ORBInitializer.html" title="在org.omg.PortableInterceptor中的接口">ORBInitializer</a></span>
|
||
</dd>
|
||
</dl>
|
||
<hr/> <br/> <pre>public interface <span class="typeNameLabel">ORBInitializerOperations</span></pre>
|
||
<div class="block">
|
||
<span>方便拦截器注册和ORB初始化。</span>
|
||
<p> <span>拦截器旨在成为ORB服务获得ORB处理的一种手段,有效地成为ORB的一部分。</span> <span>由于拦截器是ORB的一部分,当<code>ORB.init</code>返回ORB时,拦截器已被注册。</span> <span>在通过电话<code>ORB.init</code>返回后,拦截器无法在ORB上<code>ORB.init</code> 。</span> </p>
|
||
<p> <span>通过注册实现ORBInitializer接口的相关联的<code>ORBInitializer</code>对象来注册<code>ORBInitializer</code>器。</span> <span>当在初始化ORB,应当调用每个注册<code>ORBInitializer</code> ,传递一个<code>ORBInitInfo</code>其用于登记其拦截器对象。</span> </p>
|
||
<p> <span><b>在Java中注册ORB初始化器</b></span> </p>
|
||
<p> <span>ORBInitializers通过Java ORB属性注册。</span> </p>
|
||
<p> <span>财产名称的格式如下:</span> </p>
|
||
<blockquote>
|
||
<span><code> org.omg.PortableInterceptor.ORBInitializerClass.<Service> </code></span>
|
||
</blockquote>
|
||
<span>其中<code><Service></code>是实现的类的字符串名称</span>
|
||
<blockquote>
|
||
<span><code> org.omg.PortableInterceptor.ORBInitializer </code></span>
|
||
</blockquote>
|
||
<span>为避免名称冲突,应使用反向DNS名称约定。</span>
|
||
<span>例如,如果X公司有三个初始化器,它可以定义以下属性:</span>
|
||
<ul>
|
||
<li> <code>org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init1</code> </li>
|
||
<li> <code>org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init2</code> </li>
|
||
<li> <code>org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init3</code> </li>
|
||
</ul>
|
||
<span>在ORB.init期间,收集以<code>org.omg.PortableInterceptor.ORBInitializerClass</code>开头的ORB属性, <code><Service></code>每个属性的<code><Service></code>部分,对象应以<code><Service></code>字符串作为其类别名称进行<code>pre_init</code> ,并应调用<code>pre_init</code>和<code>post_init</code>方法那个对象。</span>
|
||
<span>如果有任何例外,ORB将忽略它们并继续进行。</span>
|
||
<p> <span><b><i>例</i></b></span> </p>
|
||
<p> <span>例如,由公司X编写的客户端日志记录服务可能具有以下ORBInitializer实现: <code></code></span> </p>
|
||
<pre> <span><code> package com.x.logging; import org.omg.PortableInterceptor.Interceptor; import org.omg.PortableInterceptor.ORBInitializer; import org.omg.PortableInterceptor.ORBInitInfo; public class LoggingService implements ORBInitializer { void pre_init( ORBInitInfo info ) { // Instantiate the Logging Service s Interceptor. Interceptor interceptor = new LoggingInterceptor(); // Register the Logging Service s Interceptor. info.add_client_request_interceptor( interceptor ); } void post_init( ORBInitInfo info ) { // This service does not need two init points. } } </code></span> </pre>
|
||
<span>要使用此记录服务运行一个名为<code>MyApp</code>的程序,用户可以键入:</span>
|
||
<blockquote>
|
||
<span><code> java -Dorg.omg.PortableInterceptor.ORBInitializerClass.com.x.Logging.LoggingService MyApp </code></span>
|
||
</blockquote>
|
||
<p> <span><b>关于注册拦截器的注意事项</b></span> </p>
|
||
<p> <span>请求拦截器以每ORB的形式进行注册。</span> </p>
|
||
<p> <span>要实现虚拟的每个对象拦截器,从截取点内查询目标上的策略,以确定它们是否应该做任何工作。</span> </p>
|
||
<p> <span>为了实现虚拟的每个POA拦截器,用不同的ORB实例化每个POA。</span> <span>虽然拦截器可能被行政命令,但是关于拦截器的注册没有关于秩序的概念。</span> <span>请求拦截器涉及服务环境。</span> <span>服务上下文没有任何命令,因此请求拦截器无需订单。</span> <span>IOR拦截器涉及标记的组件。</span> <span>标签组件也没有任何命令,因此IOR Interceptor不能有订单。</span> </p>
|
||
<p> <span>注册代码应该避免使用ORB(即,主叫<code>ORB.init</code>与所提供的<code>orb_id</code> )。</span> <span>由于在ORB初始化期间发生注册,因此在此ORB处于此状态时调用的结果未定义。</span> </p>
|
||
</div>
|
||
<dl>
|
||
<dt>
|
||
<span class="seeLabel">另请参见:</span>
|
||
</dt>
|
||
<dd>
|
||
<span><a href="../../../org/omg/PortableInterceptor/ORBInitInfo.html" title="在org.omg.PortableInterceptor中的接口"><code>ORBInitInfo</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>void</code></td>
|
||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/omg/PortableInterceptor/ORBInitializerOperations.html#post_init-org.omg.PortableInterceptor.ORBInitInfo-">post_init</a></span>(<a href="../../../org/omg/PortableInterceptor/ORBInitInfo.html" title="interface in org.omg.PortableInterceptor">ORBInitInfo</a> info)</code>
|
||
<div class="block">
|
||
在ORB初始化期间调用。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="rowColor" id="i1">
|
||
<td class="colFirst"><code>void</code></td>
|
||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/omg/PortableInterceptor/ORBInitializerOperations.html#pre_init-org.omg.PortableInterceptor.ORBInitInfo-">pre_init</a></span>(<a href="../../../org/omg/PortableInterceptor/ORBInitInfo.html" title="interface in org.omg.PortableInterceptor">ORBInitInfo</a> info)</code>
|
||
<div class="block">
|
||
在ORB初始化期间调用。
|
||
</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="pre_init-org.omg.PortableInterceptor.ORBInitInfo-">
|
||
<!-- --> </a>
|
||
<ul class="blockList">
|
||
<li class="blockList"> <h4>pre_init</h4> <pre>void pre_init(<a href="../../../org/omg/PortableInterceptor/ORBInitInfo.html" title="interface in org.omg.PortableInterceptor">ORBInitInfo</a> info)</pre>
|
||
<div class="block">
|
||
<span>在ORB初始化期间调用。</span>
|
||
<span>如果期望由拦截器注册的初始服务将被其他拦截器使用,那么这些初始服务应通过呼叫ORBInitInfo.register_initial_reference在此<code>ORBInitInfo.register_initial_reference</code> 。</span>
|
||
</div>
|
||
<dl>
|
||
<dt>
|
||
<span class="paramLabel">参数</span>
|
||
</dt>
|
||
<dd>
|
||
<code>info</code> - 提供可以注册拦截器的初始化属性和操作。
|
||
</dd>
|
||
</dl> </li>
|
||
</ul> <a name="post_init-org.omg.PortableInterceptor.ORBInitInfo-">
|
||
<!-- --> </a>
|
||
<ul class="blockListLast">
|
||
<li class="blockList"> <h4>post_init</h4> <pre>void post_init(<a href="../../../org/omg/PortableInterceptor/ORBInitInfo.html" title="interface in org.omg.PortableInterceptor">ORBInitInfo</a> info)</pre>
|
||
<div class="block">
|
||
<span>在ORB初始化期间调用。</span>
|
||
<span>如果服务必须在初始化时解析初始引用,那么可以假设所有初始引用在这一点上都可用。</span>
|
||
<p> <span>调用<code>post_init</code>操作不是ORB初始化的最终任务。</span> <span>按照<code>post_init</code>电话的最后一个任务是将已登录拦截器的列表附加到ORB。</span> <span>因此,在调用post_init期间,ORB不包含<code>post_init</code> 。</span> <span>如果在<code>post_init</code>内进行了一个ORB调用的调用,那么在该调用中不会调用请求拦截器。</span> <span>同样,如果执行导致创建IOR的操作,则不会调用IOR拦截器。</span> </p>
|
||
</div>
|
||
<dl>
|
||
<dt>
|
||
<span class="paramLabel">参数</span>
|
||
</dt>
|
||
<dd>
|
||
<code>info</code> - 提供可以注册拦截器的初始化属性和操作。
|
||
</dd>
|
||
</dl> </li>
|
||
</ul> </li>
|
||
</ul> </li>
|
||
</ul>
|
||
</div>
|
||
</div> |