Monday, August 28, 2006

VBJ Implementation: ORB.init


  • org.omg.CORBA.ORB.init(...)
  • This class reads the property "org.omg.CORBA.ORBClass" and instantiates the
    the class using newInstance

  • Calls set_parameters(...)
  • This call comes to com.inprise.vbroker.orb.ORB class
  • initializes the com.inprise.vbroker.properties.PropertyManager and is cached in ORB
  • Processes the command-line and VM properties using com.inprise.vbroker.properties.CommandLineProcessor
  • PropertyManager has a ChainProperties class which keeps an assortment of properties of different types such as command line properties, system properties (VM), properties loaded from file and some others.
  • Command-line and VM properties are added to the ChainProperties
  • Command-line parameters starting with -OA or -vbroker are added directly into the command line property set in the chainProperties. While adding, any templates are expanded. Any properties starting with -ORB are migrated to new properties and added in.
  • Similarly, the system properties (VM) are processed and added to the ChainProperties in the PropertyManager
  • Call initialize()
  • The properties passed in during ORB.init() are now processed as above and added to PropertyManager
    which is internally cached in ORB properties set.
  • File ORB.properties is then read and all the properties are again processed and added to the
    PropertyManager into DEF_PROPS bucket
  • Properties are then read from the file pointed by ORBpropStorage and loaded into FILE_PROPS bucket.
  • If the property vbroker.orb.propOrdering is set, then the buckets in the ChainProperties is ordered
    to be compliant to be with the specified ordering
  • Initialize Web Service
  • Initialize Logger
  • Instantiates a new com.inprise.vbroker.interceptor.Init; This class implements com.inprise.vbroker.interceptor.ServiceLoader interface
    and has init, init_completed and shutdown API
  • Calls init()
  • Instantiates a new com.inprise.vbroker.interceptor.InterceptorManagerImpl object
    which implements InterceptorManagerControl which has API to get_manager
  • Constructor initialize the following interceptor managers
  • "Bind" -> BindInterceptorManagerExt
  • "POALifeCycle" -> POALifeCycleInterceptorManagerExt
  • "ServiceResolver" -> ServiceResolverInterceptorManagerExt
  • "PolicyCreation" -> PolicyInterceptorManagerExt
  • "URL" -> URLInterceptorManager
  • "ObjectKeyAliasing" -> ObjectKeyAliasInterceptorManager
  • "Connection" -> ConnectionInterceptorManager
  • "POACreation" -> POACreationInterceptorManager
  • "GlobalServerRequest" -> ServerRequestInterceptorManagerExt
  • "GlobalIORCreation" -> IORCreationInterceptorManagerExt
  • "EventQueue" -> EventQueueManager
  • Add another ServiceResolver for resolving the Control with following name
    "VisiBrokerInterceptorControl"
  • Create a new instance of ProtocolManager of type com.inprise.vbroker.ProtocolEngine.ManagerImpl
    Initialize the various Protocol Engine bits. The factories are all anonymous objects that create the
    objects that are shown after th "->"
  • Server Engine factory -> com.inprise.vbroker.ProtocolEngine.ServerEngineImpl
  • Threadpool Dispatcher factory -> com.inprise.vbroker.orb.TPDispatcherImpl
  • NIO Threadpool Dispatcher factory -> com.inprise.vbroker.orb.TPDispatcherImplNio
  • Thread Session Dispatcher factory -> com.inprise.vbroker.orb.TSDispatcherImpl
  • Main Thread Dispatcher factory -> com.inprise.vbroker.orb.MTDispatcherImpl
  • Connection Pool factory -> com.inprise.vbroker.orb.ConnectionPool
  • Socket Server Connection Manager factory -> com.inprise.vbroker.orb.SocketSCM
  • NIO Socket Server Connection Manager factory -> com.inprise.vbroker.orb.SocketSCMnio
  • URL manager is cached and the following URL resolvers are installed. URL resolver have
    this notion of supported protocols which they can resolve.
  • com.inprise.vbroker.IIOP.IIOPLocResolver
  • com.inprise.vbroker.IIOP.CorbaLocResolver
  • com.inprise.vbroker.IIOP.IIOPNameResolver
  • Install all Service loaders listed in the property vbroker.orb.systemLibs.application property.
    In this case, the property value points to service loaders.
  • Install all the Service loaders listed in the property vbroker.orb.dynamicLibs.
    The funny thing in this case is that vbroker.orb.dynamicLibs is a prefix and there could
    be number of vbroker.orb.dynamicLibs.<xxx> properties for example vbroker.orb.dynamicLibs.naming
    and the value of these properties will be the actual service loaders. Also, for each of these,
    the value could be comma separated list.
  • Each of the Service Loaders thus found is then initialized by calling Init().
  • com.inprise.vbroker.IIOP.Init
  • com.inprise.vbroker.LIOP.Init
  • com.inprise.vbroker.qos.Init
  • com.inprise.vbroker.ds.Init
  • com.inprise.vbroker.URLNaming.Init
  • com.inprise.vbroker.dynamic.Init
  • com.inprise.vbroker.ir.Init
  • com.inprise.vbroker.naming.Init
  • com.inprise.vbroker.ServerManager.Init
  • com.inprise.vbroker.IOP.Init
  • com.inprise.vbroker.CONV_FRAME.Init
  • com.inprise.vbroker.PortableInterceptor.Init
  • com.inprise.vbroker.rmi.CORBA.Init
  • com.borland.vbroker.notify.Init
  • com.borland.vbroker.CosTime.Init
  • com.inprise.vbroker.naming.Initilize
  • ORB initializers are now installed
  • Property org.omg.PortableInterceptor.ORBInitializerClass is
    used as prefix. All the property names starting with prefix is got
    and the actual Initializer class are the suffix after removing the
    prefix and added to a collection
  • If the property vbroker.orb.enableNativeMessaging is true, then
    the init class com.borland.vbroker.NativeMessaging.Init is added to
    the collection.
  • com.borland.security.core.Init is always added to the collection.
  • All the classes are now loaded and instantiated and added to the
    _services and _orbInitializer lists.
  • Add com.inprise.vbroker.poa.POABidder as client engine
  • Register value factories for VisiObjectReferenceTemplate and VisiTransientObjectReferenceTemplate.
  • Call the pre_init and post_init operations on the ORB initializers.
  • Cache all the property settings in the ORB such as vbroker.orb.tcIndirection.
    There are lot of such properties cached here.
  • Call complete_init() on all the ServiceLoaders now.