This is an
optional interface that an in-process plugin must implement to be notified when it is about
to be used as well as for getting a hold of its settings.
The life cycle management rules are the following.
RUN time
-
Plug-in interceptors instances are created the first time they are needed and cached for subsequent usage if
they are flagged as cacheable (com.actional.classloader.LoadableClassDefinition.isMgrCachable = true).
-
The application calls com.actional.soapstation.plugin.inproc.IInit.destroy(IDestroyContext) when the plug-in
instance is no longer used. Therefore, this method is no longer deprecated.
Changing a plug-in declaration (through updating any subclass of com.actional.soapstation.db.JavaPluginLC or
com.actional.soapstation.db.JavaPluginInstance) or its class loader
(com.actional.classloader.DynamicClassLoaderEnvironment) causes the plug-in to be released,
in which case com.actional.soapstation.plugin.inproc.IInit.destroy(IDestroyContext) is invoked.
com.actional.soapstation.plugin.inproc.IInit.destroy(IDestroyContext) is only invoked for plug-ins that are
declared as cacheable (com.actional.classloader.LoadableClassDefinition.isMgrCachable = true).
CONFIGURATION time
The following states how plug-ins should be developed to properly behave during configuration.
The life cycle of plug-ins instances does NOT follow the rules listed above.
Therefore, it is
highly suggested that plug-in DO NOT create in
com.actional.soapstation.plugin.inproc.IInit.init(IInitContext) resources that must be explicitly released.
Instead, such resources SHOULD be created on demand (and probably cached for subsequent usage) in
com.actional.soapstation.plugin.inproc.IInterceptor.invoke(IInvokeContext).