Package org.omg.PortableServer
在Java中,基于可移植对象适配器(POA)的动态骨架接口(DSI)服务器继承自DynamicImplementation
类的标准Servant
类。 原生Servant
类型由POA的PortableServer
模块定义。 在Java中, Servant
类型映射到Java org.omg.PortableServer.Servant
类。 它用作所有POA服务器实现的基类,并提供了可以由应用程序员调用的多种方法,以及由POA自身调用并可被用户覆盖以控制仆人行为方面的方法。
包装规格
有关官方OMG规范的支持部分的精确列表,Java [tm] Platform,Standard Edition 6符合,请参阅Official Specifications for CORBA support in Java[tm] SE 6 。
POA相关接口
PortableServer
模块定义了以下POA相关接口:
-
POA
-
POAManager
-
ServantManager
-
ServantActivator
-
ServantLocator
-
AdapterActivator
-
ThreadPolicy
-
LifespanPolicy
-
IdUniquenessPolicy
-
IdAssignmentPolicy
-
ImplicitActivationPolicy
-
ServantRetentionPolicy
-
RequestProcessingPolicy
-
Current
此外,POA定义了Servant
本机类型。
操作类
上面列出的每个接口都有一个关联的Operations
接口。 Operations
接口由idlj
编译器生成,并包含其关联接口中定义的方法的方法签名。 Operations
接口可以由客户端和服务器访问,而其关联的接口只能由客户端调用。
价值类
以后缀PolicyValue
结尾的类提供用于create_POA
调用的值,它为POA设置策略。
请参阅下面的sample code进行演示。
PolicyValue
文件包括以下内容:
-
IdAssignmentPolicyValue
-
IdUniquenessPolicyValue
-
ImplicitActivationPolicyValue
-
LifespanPolicyValue
-
RequestProcessingPolicyValue
-
ServantRetentionPolicyValue
-
ThreadPolicyValue
助手班
为OMG IDL接口中的所有用户定义类型生成的助手类提供了处理这些类型所需的静态方法。 应用程序员使用的辅助类中只有一种方法: narrow
方法。 只有从IDL接口映射的Java接口将具有一个包含narrow
方法的帮助类,所以在PortableServer
包中,只有以下类有一个narrow
方法:
-
ForwardRequestHelper
-
ServantActivatorHelper
-
ServantLocatorHelper
POA类
POA类用于实现ServantActivator
或ServantLocator
。
例外
ForwardRequest
异常向ORB表明它负责将当前请求和后续的ForwardRequest
请求传递给异常的forward_reference
成员中的对象。
应用程序员实现的接口
PortableServer
大部分内容对用户来说都是透明的。 结果是程序员只会使用上面提到的几个接口。 剩余的接口将由ORB实现提供。 应用程序员感兴趣的界面如下:
-
AdapterActivator
适配器激活器与POA相关联。 适配器激活器提供一个POA,按需创建子POA的能力,作为接收请求名称的子POA(或它的一个子)的副作用,或当
find_POA
被调用的激活参数值TRUE
。 在执行开始时创建其所需的所有POA的应用服务器不需要使用或提供适配器激活器; 只有在请求处理期间需要创建POA的情况下才有必要。 -
ServantLocator
当POA具有
NON_RETAIN
策略时,它将使用ServantLocator
s的业务经理。 -
ServantActivator
当POA具有
RETAIN
策略时,它将使用ServantActivator
s的业务经理。
套装org.omg.PortableServer.ServantLocatorPackage
该包提供CookieHolder
类,用于传递Cookie
类型作为out
参数。 CookieHolder
类与基本类型的其他持有者类完全相同。
相关文档
有关Java IDL的概述,请参阅: Java IDL home page 。
示例代码
服务器代码示例
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 );
}
}
- 从以下版本开始:
-
1.4
-
接口摘要 接口 描述 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一起使用的线程模型。 -
类摘要 Class 描述 _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 .