Class BaseMonitor
java.lang.Object
org.apache.derby.impl.services.monitor.BaseMonitor
- All Implemented Interfaces:
BundleFinder
,ModuleFactory
- Direct Known Subclasses:
FileMonitor
Implementation of the monitor that uses the class loader
that the its was loaded in for all class loading.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescription(package private) Properties
(package private) Properties
private ContextService
(package private) ThreadGroup
private boolean
(package private) boolean
private static final String
private PrintWriter
private InstanceGetter[]
(package private) boolean
private static final String
Look for any services in the a properties set and the application property set and then start them.private final HashMap
<String, PersistentService> Hash table of objects that implement PersistentService keyed by their getType() method.private final Vector
<TopService> private InfoStreams
private TimerFactory
private AccessibleByteArrayOutputStream
private PrintWriter
private UUIDFactory
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addDebugFlags
(String flags, boolean set) (package private) abstract InputStream
Get InputStream for application properties file Returns nul if it does not exist.(package private) static void
boot
(Object module, boolean create, Properties properties) Boot a module.private void
Boot all persistent services that can be located at run time.protected void
bootProviderServices
(PersistentService provider) Boot all persistent services that can be located by a single service provider
This method enumerates through all the service providers that are active and calls bootPersistentServices(PersistentService) to boot all the services that that provider knows about.protected Object
bootService
(PersistentService provider, String factoryInterface, String serviceName, Properties properties, boolean create) Boot (start or create) a service (persistent or non-persistent).(package private) static boolean
canSupport
(Object instance, Properties properties) If the module implements ModuleSupportable then call its canSupport() method to see if it can or should run in this setup.classFromIdentifier
(int fmtId) Obtain a class that supports the given identifier.createPersistentService
(String factoryInterface, String name, Properties properties) Create a persistent service.private void
Determine which of the set of service providers (PersistentService objects) are supported in the current environment.(package private) void
dumpProperties
(String title, Properties props) private void
dumpTempWriter
(boolean bothPlaces) private static int
findImplementation
(List<Class<?>> implementations, int startIndex, Class<?> factoryInterface) Find a class that implements the required index, return the index into the implementations vector of that class.findModule
(Object serviceModule, String factoryInterface, String identifier) Find the module in the system with the given module protocol, protocolVersion and identifier.private boolean
findProviderAndStartService
(String name, Properties properties, boolean bootTime) Find a provider and start a service.protected PersistentService
findProviderForCreate
(String name) private PersistentService
findProviderFromName
(String name, int colon) Find the service provider from a name that includes a service type, ie. is of the form 'type:name'.findService
(String factoryInterface, String serviceName) Find a service.private TopService
findTopService
(Object serviceModule) Return the application set of properties which correspond to the set of properties in the file derby.properties.Get the locale from the ContextManager and then find the bundle based upon that locale.getCanonicalServiceName
(String userSpecifiedName) Canonicalize a service name, mapping different user-specifications of a database name onto a single, standard name.private static ContextService
Privileged lookup of the ContextService.getDaemonThread
(Runnable task, String name, boolean setMinPriority) Get a newly created background thread.(package private) Properties
Get the complete set of module properties by loading in contents of all the org/apache/derby/modules.properties files.getImplementations
(Properties moduleList, boolean actualModuleList) Create an implementation set.Return the locale of the service that the passed in module lives in.getLocaleFromString
(String localeDescription) Translate a string of the form ll[_CC[_variant]] to a Locale.private PersistentService
getPersistentService
(String subSubProtocol) Return a PersistentService implementation to handle the subSubProtocol.private PersistentService
getPersistentService
(String className, String subSubProtocol) private boolean
getPersistentServiceImplementation
(Class<?> possibleModule) String[]
getServiceList
(String protocol) Return an array of the service identifiers that are running and implement the passed in protocol (java interface class name).getServiceName
(Object serviceModule) Return the name of the service that the passed in module lives in.getServiceProvider
(String subSubProtocol) Return the PersistentService for a subsubprotocol.getServiceType
(Object serviceModule) Return the PersistentService object for a service.private String
getStorageFactoryClassName
(String subSubProtocol) Find the StorageFactory class name that handles the subSub protocol.Get the defined default system streams object.private PrintWriter
Returns the Timer factory for this system.Return the UUID factory for this system.(package private) abstract boolean
initialize
(boolean lite) Initialize the monitor wrt the current environemnt.final boolean
isDaemonThread
(Thread thread) Check if a thread is a daemon thread created byModuleFactory.getDaemonThread(java.lang.Runnable, java.lang.String, boolean)
.protected Object
loadInstance
(Class<?> factoryInterface, Properties properties) load a module instance.private Object
loadInstance
(List<Class<?>> implementations, Class<?> factoryInterface, Properties properties) private Object
newInstance
(Class<?> classObject) Return a new instance of classclassObject
using a no-param constructor.newInstanceFromIdentifier
(int identifier) Obtain an new instance of a class that supports the given identifier.protected Properties
void
Removes a PersistentService.protected static Properties
removeRuntimeProperties
(Properties properties) Return a property set that has the runtime properties removed.protected void
Should only be called if reportOn is true apart from report/Exception().protected void
protected final void
runWithState
(Properties properties, PrintWriter log) Set the locale for the service *outside* of boot time.private static Locale
setLocale
(Properties properties) setLocale
(Properties serviceProperties, String userDefinedLocale) Set the locale for the service at boot time.private static boolean
setMonitor
(BaseMonitor baseMonitor) Privileged startup.void
shutdown()
Shut down the complete system that was started by this Monitor.void
Shut down a service that was started by this Monitor.startModule
(boolean create, Object serviceModule, String factoryInterface, String identifier, Properties properties) Start a module.startNonPersistentService
(String factoryInterface, String serviceName, Properties properties) Start a non-persistent service.final boolean
startPersistentService
(String name, Properties properties) Start a peristent service.protected void
startProviderService
(PersistentService provider, String serviceName, Properties serviceProperties) Boot a service under the control of the providervoid
startServices
(Properties properties, boolean bootAll) Start all services identified by derby.service.* in the property set.private static Locale
staticGetLocaleFromString
(String localeDescription) private static void
Privileged shutdown of the ContextService.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.derby.iapi.services.monitor.ModuleFactory
getEngineVersion, getEnvironment, getJVMProperty
-
Field Details
-
serviceProviders
Hash table of objects that implement PersistentService keyed by their getType() method. -
LINE
- See Also:
-
implementationSets
-
services
-
bootProperties
Properties bootProperties -
applicationProperties
Properties applicationProperties -
inShutdown
boolean inShutdown -
systemStreams
-
contextService
-
uuidFactory
-
timerFactory
-
reportOn
boolean reportOn -
logging
-
daemonGroup
ThreadGroup daemonGroup -
rc2
-
SERVICE
Look for any services in the a properties set and the application property set and then start them. A service is defined by derby.service.name=protocol- See Also:
-
storageFactories
-
tmpWriter
-
tmpArray
-
dumpedTempWriter
private boolean dumpedTempWriter
-
-
Constructor Details
-
BaseMonitor
BaseMonitor()
-
-
Method Details
-
getSystemStreams
Description copied from interface:ModuleFactory
Get the defined default system streams object.- Specified by:
getSystemStreams
in interfaceModuleFactory
-
shutdown
public void shutdown()Description copied from interface:ModuleFactory
Shut down the complete system that was started by this Monitor. Will cause the stop() method to be called on each loaded module.- Specified by:
shutdown
in interfaceModuleFactory
-
shutdown
Shut down a service that was started by this Monitor. Will cause the stop() method to be called on each loaded module.- Specified by:
shutdown
in interfaceModuleFactory
-
runWithState
-
getCanonicalServiceName
Description copied from interface:ModuleFactory
Canonicalize a service name, mapping different user-specifications of a database name onto a single, standard name.- Specified by:
getCanonicalServiceName
in interfaceModuleFactory
- Throws:
StandardException
-
findService
Description copied from interface:ModuleFactory
Find a service.
Do not call directly - use Monitor.findService()- Specified by:
findService
in interfaceModuleFactory
- Returns:
- a refrence to a module represeting the service or null if the service does not exist.
- See Also:
-
getLocale
Description copied from interface:ModuleFactory
Return the locale of the service that the passed in module lives in. Will return null if no-locale has been defined.- Specified by:
getLocale
in interfaceModuleFactory
-
getLocaleFromString
Description copied from interface:ModuleFactory
Translate a string of the form ll[_CC[_variant]] to a Locale. This is in the Monitor because we want this translation to be in only one place in the code.- Specified by:
getLocaleFromString
in interfaceModuleFactory
- Throws:
StandardException
-
getServiceName
Return the name of the service that the passed in module lives in.- Specified by:
getServiceName
in interfaceModuleFactory
-
setLocale
Set the locale for the service *outside* of boot time.- Specified by:
setLocale
in interfaceModuleFactory
- Parameters:
userDefinedLocale
- A String in the form xx_YY, where xx is the language code and YY is the country code.- Returns:
- The new Locale for the service
- Throws:
StandardException
- Standard Derby error.
-
setLocale
public Locale setLocale(Properties serviceProperties, String userDefinedLocale) throws StandardException Set the locale for the service at boot time. The passed in properties must be the one passed to the boot method.- Specified by:
setLocale
in interfaceModuleFactory
- Throws:
StandardException
- Standard Derby error.
-
getServiceType
Return the PersistentService object for a service. Will return null if the service does not exist.- Specified by:
getServiceType
in interfaceModuleFactory
-
startModule
public Object startModule(boolean create, Object serviceModule, String factoryInterface, String identifier, Properties properties) throws StandardException Start a module.- Specified by:
startModule
in interfaceModuleFactory
- Throws:
StandardException
- se An attempt to start the module failed.- See Also:
-
findTopService
-
findModule
Description copied from interface:ModuleFactory
Find the module in the system with the given module protocol, protocolVersion and identifier.- Specified by:
findModule
in interfaceModuleFactory
- Returns:
- The module instance if found, or null.
-
classFromIdentifier
Obtain a class that supports the given identifier.- Specified by:
classFromIdentifier
in interfaceModuleFactory
- Parameters:
fmtId
- identifer to associate with class- Returns:
- a reference InstanceGetter
- Throws:
StandardException
- See Monitor.classFromIdentifier- See Also:
-
newInstanceFromIdentifier
Obtain an new instance of a class that supports the given identifier.- Specified by:
newInstanceFromIdentifier
in interfaceModuleFactory
- Parameters:
identifier
- identifer to associate with class- Returns:
- a reference to a newly created object or null if a matching class cannot be found.
- Throws:
StandardException
- See Monitor.newInstanceFromIdentifier
-
loadInstance
load a module instance. Look through the implementations for a module that implements the required factory interface and can handle the properties given. The module's start or create method is not called. -
loadInstance
private Object loadInstance(List<Class<?>> implementations, Class<?> factoryInterface, Properties properties) -
findImplementation
private static int findImplementation(List<Class<?>> implementations, int startIndex, Class<?> factoryInterface) Find a class that implements the required index, return the index into the implementations vector of that class. Returns -1 if no class could be found. -
newInstance
Return a new instance of classclassObject
using a no-param constructor.- Parameters:
classObject
- the class to instantiate- Returns:
- the instantiated object
-
getApplicationProperties
Description copied from interface:ModuleFactory
Return the application set of properties which correspond to the set of properties in the file derby.properties.- Specified by:
getApplicationProperties
in interfaceModuleFactory
-
getServiceList
Return an array of the service identifiers that are running and implement the passed in protocol (java interface class name).- Specified by:
getServiceList
in interfaceModuleFactory
- Returns:
- The list of service names, if no services exist that implement the protocol an array with zero elements is returned.
- See Also:
-
dumpProperties
-
report
Should only be called if reportOn is true apart from report/Exception(). -
reportException
-
addDebugFlags
-
startServices
Description copied from interface:ModuleFactory
Start all services identified by derby.service.* in the property set. If bootAll is true the services that are persistent will be booted.- Specified by:
startServices
in interfaceModuleFactory
-
startPersistentService
public final boolean startPersistentService(String name, Properties properties) throws StandardException Start a peristent service.- Specified by:
startPersistentService
in interfaceModuleFactory
- Parameters:
name
- Name of the service to be startedproperties
- Property set made available to all modules booted for this service, through their ModuleControl.boot method.- Returns:
- true if the service type is handled by the monitor, false if it isn't
- Throws:
StandardException
- An attempt to start the service failed.- See Also:
-
createPersistentService
public Object createPersistentService(String factoryInterface, String name, Properties properties) throws StandardException Create a persistent service.- Specified by:
createPersistentService
in interfaceModuleFactory
- Returns:
- The module from the service if it was created successfully, null if a service already existed.
- Throws:
StandardException
- An exception was thrown trying to create the service.- See Also:
-
removePersistentService
Removes a PersistentService. Could be used for drop database.- Specified by:
removePersistentService
in interfaceModuleFactory
- Parameters:
name
- : Service name to be removed.- Throws:
StandardException
-
startNonPersistentService
public Object startNonPersistentService(String factoryInterface, String serviceName, Properties properties) throws StandardException Start a non-persistent service.- Specified by:
startNonPersistentService
in interfaceModuleFactory
- Throws:
StandardException
- An attempt to start the service failed.- See Also:
-
getImplementations
Create an implementation set. Look through the properties object for all properties that start with derby.module and add the value into the vector. If no implementations are listed in the properties object then null is returned. -
getPersistentServiceImplementation
-
getDefaultImplementations
-
getDefaultModuleProperties
Properties getDefaultModuleProperties()Get the complete set of module properties by loading in contents of all the org/apache/derby/modules.properties files. This must be executed in a privileged block otherwise when running in a security manager environment no properties will be returned. -
removeRuntimeProperties
Return a property set that has the runtime properties removed. -
applicationPropertiesStream
Get InputStream for application properties file Returns nul if it does not exist.- Throws:
IOException
-
readApplicationProperties
-
determineSupportedServiceProviders
private void determineSupportedServiceProviders()Determine which of the set of service providers (PersistentService objects) are supported in the current environment. If a PersistentService implementation does not implement ModuleControl then it is assumed it does support the current environment. Otherwise the canSupport() method makes the determination. Any providers that are not supported are removed from the list. -
bootPersistentServices
private void bootPersistentServices()Boot all persistent services that can be located at run time.
This method enumerates through all the service providers that are active and calls bootPersistentServices(PersistentService) to boot all the services that that provider knows about. -
bootProviderServices
Boot all persistent services that can be located by a single service provider
This method enumerates through all the service providers that are active and calls bootPersistentServices(PersistentService) to boot all the services that that provider knows about. -
findProviderAndStartService
private boolean findProviderAndStartService(String name, Properties properties, boolean bootTime) throws StandardException Find a provider and start a service.- Throws:
StandardException
-
findProviderForCreate
- Throws:
StandardException
-
findProviderFromName
Find the service provider from a name that includes a service type, ie. is of the form 'type:name'. If type is less than 3 characters then it is assumed to be of type directory, i.e. a windows driver letter.- Throws:
StandardException
-
getServiceProvider
Description copied from interface:ModuleFactory
Return the PersistentService for a subsubprotocol.- Specified by:
getServiceProvider
in interfaceModuleFactory
- Returns:
- the PersistentService or null if it does not exist
- Throws:
StandardException
-
getPersistentService
Return a PersistentService implementation to handle the subSubProtocol.- Returns:
- Valid PersistentService or null if the protocol is not handled.
- Throws:
StandardException
-
getPersistentService
private PersistentService getPersistentService(String className, String subSubProtocol) throws StandardException - Throws:
StandardException
-
getStorageFactoryClassName
Find the StorageFactory class name that handles the subSub protocol. Looks in the system property set and the set defined during boot.- Returns:
- Valid class name, or null if no StorageFactory handles the protocol.
-
startProviderService
protected void startProviderService(PersistentService provider, String serviceName, Properties serviceProperties) throws StandardException Boot a service under the control of the provider- Throws:
StandardException
-
bootService
protected Object bootService(PersistentService provider, String factoryInterface, String serviceName, Properties properties, boolean create) throws StandardException Boot (start or create) a service (persistent or non-persistent).- Throws:
StandardException
-
getUUIDFactory
Return the UUID factory for this system. Returns null if there isn't one. See com.ibm.db2j.system.System- Specified by:
getUUIDFactory
in interfaceModuleFactory
-
getTimerFactory
Returns the Timer factory for this system.- Specified by:
getTimerFactory
in interfaceModuleFactory
- Returns:
- the system's Timer factory.
-
getTempWriter
-
dumpTempWriter
private void dumpTempWriter(boolean bothPlaces) -
canSupport
If the module implements ModuleSupportable then call its canSupport() method to see if it can or should run in this setup. If it doesn't then it can always run. -
boot
Boot a module. If the module implements ModuleControl then its boot() method is called. Otherwise all the boot code is assumed to take place in its constructor.- Throws:
StandardException
-
staticGetLocaleFromString
- Throws:
StandardException
-
setLocale
- Throws:
StandardException
-
getBundle
Get the locale from the ContextManager and then find the bundle based upon that locale.- Specified by:
getBundle
in interfaceBundleFinder
- Parameters:
messageId
- Message being searched for.
-
getDaemonThread
Description copied from interface:ModuleFactory
Get a newly created background thread. The thread is set to be a daemon but is not started.- Specified by:
getDaemonThread
in interfaceModuleFactory
-
isDaemonThread
Description copied from interface:ModuleFactory
Check if a thread is a daemon thread created byModuleFactory.getDaemonThread(java.lang.Runnable, java.lang.String, boolean)
.- Specified by:
isDaemonThread
in interfaceModuleFactory
- Parameters:
thread
- the thread to check- Returns:
true
ifthread
was created bygetDaemonThread()
,false
otherwise.
-
getContextService
Privileged lookup of the ContextService. Must be private so that user code can't call this entry point. -
stopContextService
private static void stopContextService()Privileged shutdown of the ContextService. Must be private so that user code can't call this entry point. -
setMonitor
Privileged startup. Must be private so that user code can't call this entry point. Returns true if the system is already booted or in the process of shutting down. -
initialize
abstract boolean initialize(boolean lite) Initialize the monitor wrt the current environemnt. Returns false if the monitor cannot be initialized, true otherwise.
-