uTools-Manuals/docs/java/org/omg/PortableInterceptor/ORBInitializerOperations.html

145 lines
9.0 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">
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.&lt;Service&gt; </code></span>
</blockquote>
<span>其中<code>&lt;Service&gt;</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>&lt;Service&gt;</code>每个属性的<code>&lt;Service&gt;</code>部分,对象应以<code>&lt;Service&gt;</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>