Public Member Functions | |
ComponentServantManager (Logger logger) | |
Servant | incarnate (byte[] oid, POA adapter) throws ForwardRequest |
synchronized void | etherealize (byte[] oid, POA adapter, Servant serv, boolean cleanup_in_progress, boolean remaining_activations) |
synchronized void | resetWaitForEtherealize () |
synchronized boolean | waitForEtherealize (int maxWaitMillis) |
Private Member Functions | |
void | logStackTrace (String msg) |
Private Attributes | |
Logger | m_logger |
boolean | DEBUG = false |
volatile boolean | receivedEtherealizeCall |
Impl note: until ACS 6.0.x this class inherited from org.omg.PortableServer.ServantActivatorPOA
and was activated like a normal Corba object (componentPOA.set_servant_manager(servantManager._this(m_orb))
. However this form of activation attached the servant manager instance to the ORB or root poa, with the effect that it was not garbage collected together with the component poa (memory leak!). It seems that a POJO (no Corba activation) inheriting from LocalObject
is the correct choice instead.
|
Constructor for ComponentServantManager.
|
|
See CORBA spec (2.4) 11.3.5.2 etherealize. This operation is invoked whenever a servant for an object is deactivated, assuming the POA has the USE_SERVANT_MANAGER and RETAIN policies. This method does not deal with the servant (component) at all, just notifies a thread that has called waitForEtherealize(int).
|
|
This method should never be called, because all components are activated explicitly by the container and therefore should be registered in the active object map. Thus the implementation just throws a
Note that by definition, this method acts as a fallback, if the POA can not find an object in that map (if RETAIN policy is used). The POA could call it after a component has been deactivated (
|
|
Helper method for debugging, logs the stacktrace.
|
|
Resets the flag that gets raised when the
|
|
Allows a thread to be notified of component servant etherealization. Since we use one component POA per servant, it is not necessary to distinguish for which servant the etherealize method was called.
|
|
|
|
|
|
|