| 接口 | 描述 |
|---|---|
| AdapterActivator |
适配器激活器为POA提供了根据需要创建儿童POA的能力,作为接收命名儿童POA(或其一个孩子)的请求的副作用,或者当使用activate参数值为TRUE时调用find_POA时。
|
| AdapterActivatorOperations |
适配器激活器为POA提供了根据需要创建儿童POA的能力,作为接收命名儿童POA(或其一个孩子)的请求的副作用,或者当使用activate参数值为TRUE时调用find_POA时。
|
| Current |
从CORBA :: Current派生的PortableServer :: Current接口提供了访问方法被调用的对象的身份的方法实现。
|
| CurrentOperations |
从CORBA :: Current派生的PortableServer :: Current接口提供了访问方法被调用的对象的身份的方法实现。
|
| ID_ASSIGNMENT_POLICY_ID |
org / omg / PortableServer / ID_ASSIGNMENT_POLICY_ID.java。
|
| ID_UNIQUENESS_POLICY_ID |
org / omg / PortableServer / ID_UNIQUENESS_POLICY_ID.java。
|
| IdAssignmentPolicy |
IdAssignmentPolicy指定创建的POA中的对象Id是由应用程序还是由ORB生成。
|
| IdAssignmentPolicyOperations |
IdAssignmentPolicy指定创建的POA中的对象Id是由应用程序还是由ORB生成。
|
| IdUniquenessPolicy |
IdUniquenessPolicy指定在创建的POA中激活的服务器是否必须具有唯一对象i身份。
|
| IdUniquenessPolicyOperations |
IdUniquenessPolicy指定在创建的POA中激活的服务器是否必须具有唯一对象i身份。
|
| IMPLICIT_ACTIVATION_POLICY_ID |
org / omg / PortableServer / IMPLICIT_ACTIVATION_POLICY_ID.java。
|
| ImplicitActivationPolicy |
此策略指定在创建的POA中是否支持仆人的隐式激活。
|
| ImplicitActivationPolicyOperations |
此策略指定在创建的POA中是否支持仆人的隐式激活。
|
| LIFESPAN_POLICY_ID |
org / omg / PortableServer / LIFESPAN_POLICY_ID.java。
|
| LifespanPolicy |
LifespanPolicy指定在创建的POA中实现的对象的使用寿命。
|
| LifespanPolicyOperations |
LifespanPolicy指定在创建的POA中实现的对象的使用寿命。
|
| POA |
POA对象管理对象集合的实现。
|
| POAManager |
每个POA对象都有一个关联的POAManager对象。
|
| POAManagerOperations |
每个POA对象都有一个关联的POAManager对象。
|
| POAOperations |
POA对象管理对象集合的实现。
|
| REQUEST_PROCESSING_POLICY_ID |
org / omg / PortableServer / REQUEST_PROCESSING_POLICY_ID.java。
|
| RequestProcessingPolicy |
此策略指定创建的POA如何处理请求。
|
| RequestProcessingPolicyOperations |
此策略指定创建的POA如何处理请求。
|
| SERVANT_RETENTION_POLICY_ID |
org / omg / PortableServer / SERVANT_RETENTION_POLICY_ID.java。
|
| ServantActivator |
当POA具有RETAIN策略时,它使用ServantActivator的仆人管理器。
|
| ServantActivatorOperations |
当POA具有RETAIN策略时,它使用ServantActivator的仆人管理器。
|
| ServantLocator |
当POA具有NON_RETAIN策略时,它使用ServantLocator的servant管理器。
|
| ServantLocatorOperations |
当POA具有NON_RETAIN策略时,它使用ServantLocator的servant管理器。
|
| ServantManager |
当POA接收到针对非活动对象的请求时,仆人经理为POA提供激活对象的能力。
|
| ServantManagerOperations |
当POA接收到针对非活动对象的请求时,仆人经理为POA提供激活对象的能力。
|
| ServantRetentionPolicy |
此策略指定创建的POA是否在活动对象映射中保留活动服务器。
|
| ServantRetentionPolicyOperations |
此策略指定创建的POA是否在活动对象映射中保留活动服务器。
|
| THREAD_POLICY_ID |
org / omg / PortableServer / THREAD_POLICY_ID.java。
|
| ThreadPolicy |
ThreadPolicy指定与创建的POA一起使用的线程模型。
|
| ThreadPolicyOperations |
ThreadPolicy指定与创建的POA一起使用的线程模型。
|
| 类 | 描述 |
|---|---|
| _ServantActivatorStub |
当POA具有RETAIN策略时,它使用ServantActivator的仆人管理器。
|
| _ServantLocatorStub |
当POA具有NON_RETAIN策略时,它使用ServantLocator的servant管理器。
|
| CurrentHelper |
从CORBA :: Current派生的PortableServer :: Current接口提供了访问方法被调用的对象的身份的方法实现。
|
| DynamicImplementation |
允许动态处理对象调用。
|
| ForwardRequestHelper |
org / omg / PortableServer / ForwardRequestHelper.java。
|
| IdAssignmentPolicyValue |
IdAssignmentPolicyValue可以具有以下值。
|
| IdUniquenessPolicyValue |
IdUniquenessPolicyValue可以具有以下值。
|
| ImplicitActivationPolicyValue |
ImplicitActivationPolicyValue具有以下语义。
|
| LifespanPolicyValue |
LifespanPolicyValue可以具有以下值。
|
| POAHelper |
POA对象管理对象集合的实现。
|
| RequestProcessingPolicyValue |
RequestProcessingPolicyValue可以具有以下值。
|
| Servant |
定义本机
Servant类型。
|
| ServantActivatorHelper |
当POA具有RETAIN策略时,它使用ServantActivator的仆人管理器。
|
| ServantActivatorPOA |
当POA具有RETAIN策略时,它使用ServantActivator的仆人管理器。
|
| ServantLocatorHelper |
当POA具有NON_RETAIN策略时,它使用ServantLocator的servant管理器。
|
| ServantLocatorPOA |
当POA具有NON_RETAIN策略时,它使用ServantLocator的servant管理器。
|
| ServantRetentionPolicyValue |
ServantRetentionPolicyValue可以具有以下值。
|
| ThreadPolicyValue |
ThreadPolicyValue可以具有以下值。
|
| 异常 | 描述 |
|---|---|
| ForwardRequest |
org / omg / PortableServer / ForwardRequest.java。
|
在Java中,基于便携式对象适配器(POA)的动态骨架接口(DSI)服务器继承自Servant类的标准DynamicImplementation类。 本地Servant类型由用于POA的PortableServer模块定义。 在Java中, Servant类型映射到Java org.omg.PortableServer.Servant类。 它用作所有POA服务器实现的基类,并提供了可以由应用程序员调用的多种方法,以及由POA自身调用并可被用户覆盖以控制仆人行为方面的方法。
有关Java [tm] Platform,Standard Edition 6符合的官方OMG规范支持部分的精确列表,请参阅Official Specifications for CORBA support in Java[tm] SE 6 。
PortableServer模块定义了以下POA相关接口:
此外,POA定义了Servant本机类型。
上面列出的每个接口都有一个关联的Operations接口。 Operations接口由idlj编译器生成,并包含其关联接口中定义的方法的方法签名。
Operations接口可以由客户端和服务器访问,而其关联的接口只能由客户端调用。
PolicyValue结尾的类提供用于create_POA调用的值,该值设置POA的策略。
见sample code下面的演示。
PolicyValue文件包括以下内容:
IdAssignmentPolicyValueIdUniquenessPolicyValueImplicitActivationPolicyValueLifespanPolicyValueRequestProcessingPolicyValueServantRetentionPolicyValueThreadPolicyValue为OMG IDL接口中的所有用户定义类型生成的助手类提供了处理这些类型所需的静态方法。
应用程序员使用的辅助类中只有一种方法: narrow方法。
只有从IDL接口映射的Java接口将具有一个助手类,其中包含一个narrow方法,所以在PortableServer包中,只有以下类具有narrow方法:
ForwardRequestHelperServantActivatorHelperServantLocatorHelperPOA类用于实现ServantActivator或ServantLocator 。
所述ForwardRequest异常指示给它负责将当前请求和随后的ORB ForwardRequest请求在所表示的对象forward_reference异常的部件。
PortableServer大部分内容对用户来说都是透明的。 结果是程序员只会使用上面提到的几个接口。 剩余的接口将由ORB实现提供。
应用程序员感兴趣的界面如下:
AdapterActivator
适配器激活器与POA相关联。 适配器激活器为POA提供根据需要创建儿童POA的能力,作为接收命名儿童POA(或其子女之一)的请求的副作用,或者当find_POA时,激活参数值为TRUE 。
在执行开始时创建其所需的所有POA的应用服务器不需要使用或提供适配器激活器; 只有在请求处理期间需要创建POA的情况下才有必要。
ServantLocator
当POA具有NON_RETAIN策略时,它使用ServantLocator的servant管理器。
ServantActivator
当POA具有RETAIN策略时,它使用ServantActivator s的仆人管理器。
该包提供一个CookieHolder类,用于传递Cookie类型作为out参数。
CookieHolder类遵循与基本类型的其他持有者类完全相同的模式。
有关Java IDL的概述,请参阅:
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.rmi.PortableRemoteObject ;
import com.sun.corba.se.impl.poa.POAORB;
import org.omg.PortableServer.*;
import java.util.*;
import org.omg.CORBA.*;
import javax.rmi.CORBA.Stub;
import javax.rmi.CORBA.Util;
public class HelloServer {
public HelloServer(String[] args) {
try {
Properties p = System.getProperties();
// p.put("org.omg.CORBA.ORBClass", "com.sun.corba.ee.internal.POA.POAORB");
ORB orb = ORB.init( args, p );
POA rootPOA = (POA)orb.resolve_initial_references("RootPOA");
Policy[] tpolicy = new Policy[3]; tpolicy[0] = rootPOA.create_lifespan_policy( LifespanPolicyValue.TRANSIENT ); tpolicy[1] = rootPOA.create_request_processing_policy( RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY ); tpolicy[2] = rootPOA.create_servant_retention_policy( ServantRetentionPolicyValue.RETAIN); POA tpoa = rootPOA.create_POA("MyTransientPOA", null, tpolicy);
String ObjectId = "MyObjectId";
byte[] oid = ObjectId.getBytes();
org.omg.CORBA.Object obj = tpoa.create_reference_with_id(oid,
new _HelloImpl_Tie()._all_interfaces(tpoa, oid)[0]);
HelloInterface helloRef = (HelloInterface)PortableRemoteObject.narrow(
obj, HelloInterface.class );
Context initialNamingContext = new InitialContext();
initialNamingContext.rebind("HelloService", helloRef);
System.out.println("Hello Server: Ready...");
orb.run();
} catch (Exception e) {
System.out.println("Trouble: " + e);
e.printStackTrace();
}
}
public static void main(String args[]) {
new HelloServer( args );
}
}