Package org.zkoss.zk.ui.util

## Class Configuration

- java.lang.Object
- - org.zkoss.zk.ui.util.Configuration

-     public class Configuration
      extends java.lang.Object

  The ZK configuration.

  To retrieve the current configuration, use `WebApp.getConfiguration()`.

  Note: A `Configuration` instance can be assigned to at most one `WebApp` instance.

  Author:
    tomyeh

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Configuration()` | Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addClientPackage​(java.lang.String pkg)` | Adds a client (JavaScript) package that is provided by this server.
    `void` | `addDataHandler​(DataHandlerInfo info)` | Adds client data attribute handler
    `void` | `addDisabledThemeURI​(java.lang.String uri)` | Specifies what theme URI to be disabled.
    `java.lang.String` | `addErrorPage​(java.lang.String deviceType, java.lang.Class<?> type, java.lang.String location)` | Adds an error page.
    `void` | `addLabelLocation​(java.lang.String location)` | Adds the location of a properties file for i18n labels.
    `void` | `addListener​(java.lang.Class<?> klass)` | Adds a listener class.
    `java.lang.Object` | `addRichlet​(java.lang.String name, java.lang.Class<?> richletClass, java.util.Map<java.lang.String,​java.lang.String> params)` | Adds the definition of a richlet.
    `java.lang.Object` | `addRichlet​(java.lang.String name, java.lang.String richletClassName, java.util.Map<java.lang.String,​java.lang.String> params)` | Adds the definition of a richlet.
    `java.lang.Object` | `addRichlet​(java.lang.String name, Richlet richlet)` | Adds the richlet.
    `void` | `addRichletMapping​(java.lang.String name, java.lang.String path)` | Adds a richlet mapping.
    `void` | `addThemeURI​(java.lang.String uri)` | Adds an CSS resource that will be generated for each ZUML desktop.
    `void` | `addThemeURIHandler​(ThemeURIHandler themeURIHandler)` | Add a `ThemeURIHandler`.
    `void` | `afterComponentAttached​(Component comp, Page page)` | Invokes `UiLifeCycle.afterComponentAttached(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Page)` when a component is attached to a page.
    `void` | `afterComponentDetached​(Component comp, Page prevpage)` | Invokes `UiLifeCycle.afterComponentDetached(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Page)` when a component is detached from a page.
    `void` | `afterComponentMoved​(Component parent, Component child, Component prevparent)` | Invokes `UiLifeCycle.afterComponentMoved(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` when a component is moved (a.k.a., page changed).
    `void` | `afterPageAttached​(Page page, Desktop desktop)` | Invokes `UiLifeCycle.afterPageAttached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Desktop)` when a compnent's parent is changed.
    `void` | `afterPageDetached​(Page page, Desktop prevdesktop)` | Invokes `UiLifeCycle.afterPageDetached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Desktop)` when a compnent's parent is changed.
    `void` | `afterProcessEvent​(Event event)` | Invokes `EventInterceptor.afterProcessEvent(org.zkoss.zk.ui.event.Event)` registered by `addListener(java.lang.Class<?>)` with a class implementing `EventInterceptor`.
    `void` | `afterShadowAttached​(ShadowElement shadow, Component host)` | Invokes `UiLifeCycle.afterShadowAttached(ShadowElement, Component)` when a shadow is attached to a host.
    `void` | `afterShadowDetached​(ShadowElement shadow, Component prevhost)` | Invokes `UiLifeCycle.afterShadowDetached(ShadowElement, Component)` when a shadow is detached from a host.
    `Event` | `beforePostEvent​(Event event)` | Invokes `EventInterceptor.beforePostEvent(org.zkoss.zk.ui.event.Event)` registered by `addListener(java.lang.Class<?>)` with a class implementing `EventInterceptor`.
    `Event` | `beforeProcessEvent​(Event event)` | Invokes `EventInterceptor.beforeProcessEvent(org.zkoss.zk.ui.event.Event)` registered by `addListener(java.lang.Class<?>)` with a class implementing `EventInterceptor`.
    `Event` | `beforeSendEvent​(Event event)` | Invokes `EventInterceptor.beforeSendEvent(org.zkoss.zk.ui.event.Event)` registered by `addListener(java.lang.Class<?>)` with a class implementing `EventInterceptor`.
    `void` | `detroyRichlets()` | Destroys all richlets.
    `void` | `enableEventThread​(boolean enable)` | Deprecated. as of release 10.0.0.
    `void` | `enableHistoryState​(boolean enable)` | Sets whether history state handle is enabled.
    `void` | `enableSourceMap​(boolean enable)` | Sets whether source map is enabled.
    `void` | `enableZScript​(boolean enable)` | Sets whether zscript is allowed.
    `java.lang.Object` | `getAttribute​(java.lang.String name)` | Returns the value of an application-specific attribute, or null if not found.
    `java.util.Map<java.lang.String,​java.lang.Object>` | `getAttributes()` | Returns a map of application-specific attributes.
    `java.lang.Class<?>` | `getAuDecoderClass()` | Returns the class used to decode AU requests, or null if the default shall be used.
    `int` | `getAutoResendTimeout()` | Returns the timeout, in milliseconds, for re-sending the AU request when the server's service unavailable or timeout.
    `java.util.Set<java.lang.String>` | `getBinderAnnotations()` | Returns binder annotations
    `java.lang.String` | `getBinderInitAttribute()` | Returns binder init attribute name
    `java.lang.String` | `getClientErrorReload​(java.lang.String deviceType, int errCode, java.lang.String connType)` | Returns the URI that is associated with the specified error code, or null if no URI is associated.
    `java.lang.Object[][]` | `getClientErrorReloads​(java.lang.String deviceType, java.lang.String connType)` | Returns an array of pairs of the error code and URI info of the specified device and connection (never null).
    `java.lang.String[]` | `getClientPackages()` | Returns a readonly list of the names of the client pages that are provided by this server
    `Composer<?>` | `getComposer​(Page page)` | Returns the system-level composer or null if none is registered.
    `java.lang.String` | `getCspPolicy()` | Returns the developer-defined policy used to override the default CSP rules, or null if not specified.
    `CspProvider` | `getCspProvider()` | Returns the CSP provider responsible for generating the CSP header and managing nonce, or null if not available.
    `java.lang.String` | `getCspReportURI()` | Returns the URI destination for CSP violation reports, or null if not specified.
    `java.util.Map<java.lang.String,​DataHandlerInfo>` | `getDataHandlers()` | Returns all of the client data attribute handlers
    `java.lang.Class<?>` | `getDesktopCacheProviderClass()` | Returns the class used to provide the desktop cache, or null if default is used.
    `int` | `getDesktopMaxInactiveInterval()` | Returns the time, in seconds, between client requests before ZK will invalidate the desktop.
    `DesktopRecycle` | `getDesktopRecycle()` | Returns the desktop recycle for this application, or null if not set.
    `java.util.Set<java.lang.String>` | `getDisabledThemeURIs()` | Returns a set of the theme URIs that are disabled (never null).
    `java.lang.String` | `getErrorPage​(java.lang.String deviceType, java.lang.Throwable error)` | Returns the error page that matches the specified error, or null if not found.
    `int` | `getEventTimeWarning()` | Returns the time, in seconds, to show a warning message if an event has been processinged longer than it.
    `ExecutionMonitor` | `getExecutionMonitor()` | Returns the execution monitor for this application, or null if not set.
    `java.lang.Class<? extends ExpressionFactory>` | `getExpressionFactoryClass()` | Returns the implementation of the expression factory that is used by the whole system, or null if the system default is used.
    `java.lang.Class<?>` | `getFailoverManagerClass()` | Returns the class used to handle the failover mechanism, or null if no custom failover mechanism.
    `java.lang.Class<?>` | `getFileItemFactoryClass()` | Returns the class used to create a file item for fileupload, or null if the default shall be used.
    `java.lang.String` | `getFileRepository()` | Returns the directory in which uploaded files will be stored, if stored on disk.
    `int` | `getFileSizeThreshold()` | Returns the threshold at which a temporary file is created as a buffer, in kilobytes, or a negative value which implies default setting.
    `java.lang.Class<?>` | `getIdGeneratorClass()` | Returns the class used to generate UUID/ID for desktop, page and components, or null if the default shall be used.
    `java.lang.String` | `getInitCrashScript()` | Returns init crash script, if null, use default, see crashmsg.js
    `int` | `getInitCrashTimeout()` | Returns init crash timeout, if -1, use default, which is 60 sec
    `Initiator[]` | `getInitiators()` | Returns a readonly list of the system-level initiators.
    `java.lang.String[]` | `getLabelLocations()` | Returns an array of the locations of properties files registered by `addLabelLocation(java.lang.String)`.
    `int` | `getMaxProcessTime()` | Returns the maximal allowed time to process events, in milliseconds.
    `int` | `getMaxSpareThreads()` | Returns the maximal allowed number of the spare pool for queuing event processing threads (per Web application).
    `int` | `getMaxSuspendedThreads()` | Returns the maximal allowed number of suspended event processing threads (per Web application).
    `int` | `getMaxUploadSize()` | Returns the maximal allowed upload size, in kilobytes, or a negative value if no limit.
    `Monitor` | `getMonitor()` | Returns the monitor for this application, or null if not set.
    `java.util.List<NamespaceParser>` | `getNamespaceParsers()` | Returns a readonly list of the system-level NamespaceParsers.
    `PerformanceMeter` | `getPerformanceMeter()` | Returns the performance meter for this application, or null if not set.
    `java.lang.String` | `getPreference​(java.lang.String name, java.lang.String defaultValue)` | Returns the value of the preference defined in zk.xml, or by `setPreference(java.lang.String, java.lang.String)`.
    `java.util.Set<java.lang.String>` | `getPreferenceNames()` | Returns a readonly set of all preference names.
    `int` | `getProcessingPromptDelay()` | Returns the time, in milliseconds, before ZK Client Engine shows a dialog to prompt users that the request is in processing.
    `PropertiesRenderer[]` | `getPropertiesRenderers()` | Returns a readonly list of the system-level properties renders.
    `java.lang.String` | `getResponseCharset()` | Returns the charset used to generate the HTTP response or null to use the container's default.
    `Richlet` | `getRichlet​(java.lang.String name)` | Returns an instance of richlet of the specified name, or null if not found.
    `Richlet` | `getRichletByPath​(java.lang.String path)` | Returns an instance of richlet for the specified path, or null if not found.
    `SEORenderer[]` | `getSEORenderers()` | Returns a readonly list of the system-level SEO renderer.
    `java.lang.Class<?>` | `getSessionCacheClass()` | Returns the class used to store ZK sessions, or null if the default shall be used.
    `int` | `getSessionMaxDesktops()` | Returns the maximal allowed number of desktop per session.
    `int` | `getSessionMaxInactiveInterval()` | Returns the time, in seconds, between client requests before ZK will invalidate the session.
    `int` | `getSessionMaxPushes()` | Returns the maximal allowed number of concurrent server-pushes per session.
    `int` | `getSessionMaxRequests()` | Returns the maximal allowed number of concurrent requests per session.
    `ThemeProvider` | `getThemeProvider()` | Returns the theme provider for the current execution, or null if not available.
    `java.util.List<ThemeURIHandler>` | `getThemeURIHandlers()` | Returns a list of `ThemeURIHandler`.
    `java.lang.String[]` | `getThemeURIs()` | Returns a readonly list of the URI of the CSS resources that will be generated for each ZUML desktop (never null).
    `java.lang.String` | `getTimeoutMessage​(java.lang.String deviceType)` | Returns the timeout message for this device, or null if the default message is preferred.
    `URIInfo` | `getTimeoutURI​(java.lang.String deviceType)` | Returns the timeout URI for this device.
    `int` | `getTooltipDelay()` | Returns the time, in milliseconds, before ZK Client Engine shows the tooltip when a user moves the mouse over particular UI components.
    `java.lang.Class<?>` | `getUiEngineClass()` | Returns the class used to handle UI loading and updates, or null if default is used.
    `java.lang.Class<?>` | `getUiFactoryClass()` | Returns the class used to instantiate desktops, pages and components, or null if default is used.
    `java.lang.String` | `getUploadCharset()` | Returns the charset used to encode the uploaded text file (never null).
    `CharsetFinder` | `getUploadCharsetFinder()` | Returns the finder that is used to decide the character set for the uploaded text file(s), or null if not available.
    `WebApp` | `getWebApp()` | Returns the Web application that this configuration belongs to, or null if it is not associated yet.
    `java.lang.Class<?>` | `getWebAppClass()` | Returns the class used to represent this Web application, or null if default is used.
    `java.lang.Class<?>` | `getWebAppFactoryClass()` | Returns the class used to instantiate an instance representing this Web application, or null if default is used.
    `boolean` | `hasCallBack​(java.lang.String name)` | Returns if a callback function `Callback.call(Object data)` is registered.
    `void` | `init​(Page page)` | Initializes the given page with the variable resolvers registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeCallback​(java.lang.String name, java.lang.Object data)` | Invokes a callback function `Callback.call(Object data)`
    `void` | `invokeDesktopCleanups​(Desktop desktop)` | Invokes `DesktopCleanup.cleanup(org.zkoss.zk.ui.Desktop)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeDesktopInits​(Desktop desktop, java.lang.Object request)` | Invokes `DesktopInit.init(org.zkoss.zk.ui.Desktop, java.lang.Object)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeEventThreadCompletes​(java.util.List<EventThreadCleanup> cleanups, Component comp, Event evt, java.util.List<java.lang.Throwable> errs, boolean silent)` | Invoke `EventThreadCleanup.complete(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each instance returned by `newEventThreadCleanups(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.util.List<java.lang.Throwable>, boolean)`.
    `boolean` | `invokeEventThreadInits​(java.util.List<EventThreadInit> inits, Component comp, Event evt)` | Invokes `EventThreadInit.init(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each instance returned by `newEventThreadInits(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`.
    `void` | `invokeEventThreadResumeAborts​(Component comp, Event evt)` | Invokes `EventThreadResume.abortResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeEventThreadResumes​(java.util.List<EventThreadResume> resumes, Component comp, Event evt)` | Invokes `EventThreadResume.afterResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each instance returned by `newEventThreadResumes(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`.
    `void` | `invokeEventThreadSuspends​(java.util.List<EventThreadSuspend> suspends, Component comp, Event evt)` | Invokes `EventThreadSuspend.afterSuspend(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeExecutionCleanups​(Execution exec, Execution parent, java.util.List<java.lang.Throwable> errs)` | Invokes `ExecutionCleanup.cleanup(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.Execution, java.util.List<java.lang.Throwable>)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeExecutionInits​(Execution exec, Execution parent)` | Invokes `ExecutionInit.init(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.Execution)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeRequestInterceptors​(Session sess, java.lang.Object request, java.lang.Object response)` | Invokes `RequestInterceptor.request(org.zkoss.zk.ui.Session, java.lang.Object, java.lang.Object)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeSessionCleanups​(Session sess)` | Invokes `SessionCleanup.cleanup(org.zkoss.zk.ui.Session)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeSessionInits​(Session sess, java.lang.Object request)` | Invokes `SessionInit.init(org.zkoss.zk.ui.Session, java.lang.Object)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeURIInterceptors​(java.lang.String uri)` | Invokes `URIInterceptor.request(java.lang.String)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeWebAppCleanups()` | Invokes `WebAppCleanup.cleanup(org.zkoss.zk.ui.WebApp)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `invokeWebAppInits()` | Invokes `WebAppInit.init(org.zkoss.zk.ui.WebApp)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `boolean` | `isAutomaticTimeout​(java.lang.String deviceType)` | Returns whether to automatically trigger the timeout at the client.
    `boolean` | `isCrawlable()` | Returns whether this Web application can be crawled by search engines.
    `boolean` | `isCspEnabled()` | Returns whether this Web application enables Content Security Policy (CSP).
    `boolean` | `isCspReportOnly()` | Returns whether CSP is enforced in report-only mode.
    `boolean` | `isCspStrictDynamicEnabled()` | Returns whether this Web application enables nonce-based strict CSP mode.
    `boolean` | `isCustomThemeProvider()` | Returns whether to use custom `ThemeProvider`.
    `boolean` | `isCustomThemeRegistry()` | Returns whether to use custom `ThemeRegistry`.
    `boolean` | `isCustomThemeResolver()` | Returns whether to use custom `ThemeResolver`.
    `boolean` | `isDebugJS()` | Returns whether to debug JavaScript files.
    `boolean` | `isEventThreadEnabled()` | Deprecated. as of release 10.0.0.
    `boolean` | `isHistoryStateEnabled()` | Returns whether history state handle is enabled.
    `boolean` | `isKeepDesktopAcrossVisits()` | Returns whether to keep the desktops across visits.
    `boolean` | `isSendClientErrors()` | Returns whether to send client errors to the server for logging the page url where the error occurred and its stack trace.
    `boolean` | `isSourceMapEnabled()` | Returns whether source map is enabled.
    `boolean` | `isTimerKeepAlive()` | Returns whether to keep the session alive, when receiving the onTimer event.
    `boolean` | `isZScriptEnabled()` | Returns whether zscript is allowed.
    `java.util.List<EventThreadCleanup>` | `newEventThreadCleanups​(Component comp, Event evt, java.util.List<java.lang.Throwable> errs, boolean silent)` | Invokes `EventThreadCleanup.cleanup(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.util.List<java.lang.Throwable>)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `java.util.List<EventThreadInit>` | `newEventThreadInits​(Component comp, Event evt)` | Constructs a list of `EventThreadInit` instances and invokes `EventThreadInit.prepare(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `java.util.List<EventThreadResume>` | `newEventThreadResumes​(Component comp, Event evt)` | Constructs a list of `EventThreadResume` instances and invokes `EventThreadResume.beforeResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `java.util.List<EventThreadSuspend>` | `newEventThreadSuspends​(Component comp, Event evt, java.lang.Object obj)` | Constructs a list of `EventThreadSuspend` instances and invokes `EventThreadSuspend.beforeSuspend(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.lang.Object)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.
    `void` | `registerCallBack​(java.lang.String name, Callback callback)` | Register a callback function `Callback.call(Object data)`
    `java.lang.Object` | `removeAttribute​(java.lang.String name)` | Removes the value of an application-specific attribute.
    `java.lang.String` | `removeClientErrorReload​(java.lang.String deviceType, int errCode, java.lang.String connType)` | Removes the URI to redirect to, when ZK Client Engine receives an error.
    `void` | `removeListener​(java.lang.Class<?> klass)` | Removes a listener class.
    `java.lang.Object` | `removeRichlet​(java.lang.String name)` | Removes the richlet and associated richlet mappings.
    `java.lang.Object` | `setAttribute​(java.lang.String name, java.lang.Object value)` | Returns the value of an application-specific attribute.
    `void` | `setAuDecoderClass​(java.lang.Class<?> cls)` | Sets the class that is used to decode AU requests, or null to use the default.
    `boolean` | `setAutomaticTimeout​(java.lang.String deviceType, boolean auto)` | Sets whether to automatically trigger the timeout at the client.
    `void` | `setAutoResendTimeout​(int minisecs)` | Specifies the timeout, in milliseconds, to re-send the AU request when the server's service unavailable or timeout.
    `void` | `setBinderAnnotations​(java.util.Set<java.lang.String> binderAnnotations)` | Set binder annotations
    `void` | `setBinderInitAttribute​(java.lang.String binderInitAttribute)` | Set binder init attribute name
    `java.lang.String` | `setClientErrorReload​(java.lang.String deviceType, int errCode, java.lang.String uri, java.lang.String connType)` | Sets the URI to redirect to, when ZK Client Engine receives an error.
    `void` | `setCrawlable​(boolean crawlable)` | Sets whether this Web application is crawlable.
    `void` | `setCspEnabled​(boolean cspEnabled)` | Sets whether CSP is enabled.
    `void` | `setCspPolicy​(java.lang.String policy)` | Sets the developer-defined policy used to override the default CSP rules.
    `void` | `setCspProvider​(CspProvider cspProvider)` | Sets the CSP provider.
    `void` | `setCspReportOnly​(boolean cspReportOnly)` | Sets whether to enforce CSP in report-only mode.
    `void` | `setCspReportURI​(java.lang.String cspReportURI)` | Sets the URI destination for CSP violation reports.
    `void` | `setCspStrictDynamicEnabled​(boolean cspStrictDynamicEnabled)` | Sets whether nonce-based strict CSP mode is enabled.
    `void` | `setCustomThemeProvider​(boolean customThemeProvider)` | Sets whether to use custom `ThemeProvider`.
    `void` | `setCustomThemeRegistry​(boolean customThemeRegistry)` | Sets whether to use custom `ThemeRegistry`.
    `void` | `setCustomThemeResolver​(boolean customThemeResolver)` | Sets whether to use custom `ThemeResolver`.
    `void` | `setDebugJS​(boolean debug)` | Sets whether to debug JavaScript files.
    `void` | `setDesktopCacheProviderClass​(java.lang.Class<?> cls)` | Sets the class used to provide the desktop cache, or null to use the default.
    `void` | `setDesktopMaxInactiveInterval​(int secs)` | Specifies the time, in seconds, between client requests before ZK will invalidate the desktop.
    `DesktopRecycle` | `setDesktopRecycle​(DesktopRecycle dtRecycle)` | Sets the desktop recycler for this application, or null to disable it.
    `void` | `setEventTimeWarning​(int secs)` | Set the time, in seconds, to show a warning message if an event has been processinged longer than it.
    `ExecutionMonitor` | `setExecutionMonitor​(ExecutionMonitor monitor)` | Sets the execution monitor for this application, or null to disable it.
    `void` | `setExpressionFactoryClass​(java.lang.Class<? extends ExpressionFactory> expfcls)` | Sets the implementation of the expression factory that shall be used by the whole system.
    `void` | `setFailoverManagerClass​(java.lang.Class<?> cls)` | Sets the class used to handle the failover mechanism, or null if no custom failover mechanism.
    `void` | `setFileItemFactoryClass​(java.lang.Class<?> cls)` | Sets the class that is used to create a file item for fileupload, or null to use the default.
    `void` | `setFileRepository​(java.lang.String directory)` | Sets the directory in which uploaded files will be stored, if stored on disk.
    `void` | `setFileSizeThreshold​(int sz)` | Specifies the threshold at which a temporary file is created as a buffer, in kilobytes.
    `void` | `setIdGeneratorClass​(java.lang.Class<?> cls)` | Sets the class that is used to generate UUID/ID of desktop, page and components, or null to use the default.
    `void` | `setInitCrashScript​(java.lang.String script)` | Sets user customized init crash script
    `void` | `setInitCrashTimeout​(int timeout)` | Sets user customized init crash timeout
    `void` | `setKeepDesktopAcrossVisits​(boolean keep)` | Specifies whether to keep the desktops across visits.
    `void` | `setMaxProcessTime​(int time)` | Specifies the maximal allowed time to process events, in milliseconds.
    `void` | `setMaxSpareThreads​(int max)` | Specifies the maximal allowed number of the spare pool for queuing the event processing threads (per Web application).
    `void` | `setMaxSuspendedThreads​(int max)` | Specifies the maximal allowed number of suspended event processing threads (per Web application).
    `void` | `setMaxUploadSize​(int sz)` | Specifies the maximal allowed upload size, in kilobytes.
    `Monitor` | `setMonitor​(Monitor monitor)` | Sets the monitor for this application, or null to disable it.
    `PerformanceMeter` | `setPerformanceMeter​(PerformanceMeter meter)` | Sets the performance meter for this application, or null to disable it.
    `void` | `setPreference​(java.lang.String name, java.lang.String value)` | Sets the value of the preference.
    `void` | `setProcessingPromptDelay​(int minisecs)` | Specifies the time, in milliseconds, before ZK Client Engine shows a dialog to prompt users that the request is in processing.
    `void` | `setResponseCharset​(java.lang.String charset)` | Sets the charset used to generate HTTP response.
    `void` | `setSendClientErrors​(boolean send)` | Sets whether to send client errors to the server for logging the page url where the error occurred and its stack trace.
    `void` | `setSessionCacheClass​(java.lang.Class<?> cls)` | Sets the class that is used to store ZK sessions, or null to use the default.
    `void` | `setSessionMaxDesktops​(int max)` | Specifies the maximal allowed number of desktop per session.
    `void` | `setSessionMaxInactiveInterval​(int secs)` | Specifies the time, in seconds, between client requests before ZK will invalidate the session.
    `void` | `setSessionMaxPushes​(int max)` | Specifies the maximal allowed number of concurrent server-pushes per session.
    `void` | `setSessionMaxRequests​(int max)` | Specifies the maximal allowed number of concurrent requests per session.
    `void` | `setThemeProvider​(ThemeProvider provider)` | Sets the theme provider for the current execution, or null if not available.
    `java.lang.String` | `setTimeoutMessage​(java.lang.String deviceType, java.lang.String message)` | Sets the timeout message for this device, or null if the default message is preferred.
    `URIInfo` | `setTimeoutURI​(java.lang.String deviceType, java.lang.String timeoutURI, int type)` | Sets the timeout URI.
    `void` | `setTimerKeepAlive​(boolean alive)` | Specifies whether to keep the session alive, when receiving the onTimer event.
    `void` | `setTooltipDelay​(int minisecs)` | Specifies the time, in milliseconds, before ZK Client Engine shows the tooltip when a user moves the mouse over particular UI components.
    `void` | `setUiEngineClass​(java.lang.Class<?> cls)` | Sets the class used to handle UI loading and updates, or null to use the default.
    `void` | `setUiFactoryClass​(java.lang.Class<?> cls)` | Sets the class used to instantiate desktops, pages and components, or null to use the default.
    `void` | `setUploadCharset​(java.lang.String charset)` | Sets the charset used to encode the upload text file.
    `void` | `setUploadCharsetFinder​(CharsetFinder finder)` | Sets the finder that is used to decide the character set for the uploaded text file(s), or null if not available.
    `void` | `setWebApp​(WebApp wapp)` | Associates it with a web application.
    `void` | `setWebAppClass​(java.lang.Class<?> cls)` | Sets the class used to represent this Web application, or null to use the default.
    `void` | `setWebAppFactoryClass​(java.lang.Class<?> cls)` | Sets the class used to instantiate an instance representing this Web application, or null to use the default.
    `void` | `unregisterCallBack​(java.lang.String name)` | Unregister a callback function `Callback.call(Object data)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Configuration

          public Configuration()

      Constructor.

  - ### Method Detail

    - #### getWebApp

          public WebApp getWebApp()

      Returns the Web application that this configuration belongs to, or null if it is not associated yet.

    - #### setWebApp

          public void setWebApp​(WebApp wapp)

      Associates it with a web application.

    - #### addListener

          public void addListener​(java.lang.Class<?> klass)
                           throws java.lang.Exception

      Adds a listener class.

      Notice that there is only one listener allowed for the following classes: `Monitor`, `PerformanceMeter`, and `DesktopRecycle`. On the other hand, any number listeners are allowed for other classes.

      Notice that if the listener implements `Composer`, it can also implement `ComposerExt` and/or `FullComposer` to have more detailed control. However, ComposerExt and FullComposer are meaningless to richlets. In additions, an independent composer is instantiated for each page so there is synchronization required.

      By default, a listener is instantiated when required, and dropped after invoked. In other words, a new instance will be instantiated in the next invocation. It means you don't have to worry the threading,

      However, for better performance, the following listeners will be instantiated in `addListener(java.lang.Class<?>)`, and then used repeatedly. It means it has to be thread safe. These listeners include `URIInterceptor`, `RequestInterceptor`, `EventInterceptor`, `UiLifeCycle`, and `PropertiesRenderer`.

      Parameters:
        `klass` - the listener class must implement at least one of `Monitor`, `PerformanceMeter`, `EventThreadInit`, `EventThreadCleanup`, `EventThreadSuspend`, `EventThreadResume`, `WebAppInit`, `WebAppCleanup`, `SessionInit`, `SessionCleanup`, `DesktopInit`, `DesktopCleanup`, `ExecutionInit`, `ExecutionCleanup`, `Composer`, `Initiator` (since 5.0.7), `SEORenderer` (since 5.0.7), `PropertiesRenderer` (since 5.0.7), `VariableResolver`, `URIInterceptor`, `RequestInterceptor`, `UiLifeCycle`, `DesktopRecycle`, and/or `EventInterceptor` interfaces.
      Throws:
        `java.lang.Exception`
      See Also:
        `Desktop.addListener(java.lang.Object)`

    - #### removeListener

          public void removeListener​(java.lang.Class<?> klass)

      Removes a listener class.
      See Also:
        `Desktop.removeListener(java.lang.Object)`

    - #### newEventThreadInits

          public java.util.List<EventThreadInit> newEventThreadInits​(Component comp,
                                                                     Event evt)
                                                              throws UiException

      Constructs a list of `EventThreadInit` instances and invokes `EventThreadInit.prepare(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally (by `UiEngine` before starting an event processing thread).

      Returns:
        a list of `EventThreadInit` instances that are constructed in this method (and their `EventThreadInit.prepare(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` are called successfully), or null.
      Throws:
        `UiException` - to prevent a thread from being processed if `EventThreadInit.prepare(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` throws an exception

    - #### invokeEventThreadInits

          public boolean invokeEventThreadInits​(java.util.List<EventThreadInit> inits,
                                                Component comp,
                                                Event evt)
                                         throws UiException

      Invokes `EventThreadInit.init(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each instance returned by `newEventThreadInits(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`.

      Used only internally.

      Parameters:
        `inits` - a list of `EventThreadInit` instances returned from `newEventThreadInits(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`, or null if no instance at all.
        `comp` - the component which the event is targeting
        `evt` - the event to process
      Returns:
        false if you want to ignore the event, i.e., not to proceed any event processing for the specified event (evt).
      Throws:
        `UiException` - to prevent a thread from being processed if `EventThreadInit.init(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` throws an exception

    - #### newEventThreadCleanups

          public java.util.List<EventThreadCleanup> newEventThreadCleanups​(Component comp,
                                                                           Event evt,
                                                                           java.util.List<java.lang.Throwable> errs,
                                                                           boolean silent)

      Invokes `EventThreadCleanup.cleanup(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.util.List<java.lang.Throwable>)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `EventThreadCleanup` is constructed first, and then invoke `EventThreadCleanup.cleanup(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.util.List<java.lang.Throwable>)`.

      It never throws an exception but logs and adds it to the errs argument, if not null.

      Parameters:
        `comp` - the component which the event is targeting
        `evt` - the event to process
        `errs` - a list of exceptions (java.lang.Throwable) if any exception occurred before this method is called, or null if no exception at all. Note: you can manipulate the list directly to add or clean up exceptions. For example, if exceptions are fixed correctly, you can call errs.clear() such that no error message will be displayed at the client.
        `silent` - whether not to log the exception
      Returns:
        a list of `EventThreadCleanup`, or null
      Since:
        3.6.3

    - #### invokeEventThreadCompletes

          public void invokeEventThreadCompletes​(java.util.List<EventThreadCleanup> cleanups,
                                                 Component comp,
                                                 Event evt,
                                                 java.util.List<java.lang.Throwable> errs,
                                                 boolean silent)

      Invoke `EventThreadCleanup.complete(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each instance returned by `newEventThreadCleanups(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.util.List<java.lang.Throwable>, boolean)`.

      Used only internally.

      It never throws an exception but logs and adds it to the errs argument, if not null.

      Parameters:
        `cleanups` - a list of `EventThreadCleanup` instances returned from `newEventThreadCleanups(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.util.List<java.lang.Throwable>, boolean)`, or null if no instance at all.
        `errs` - used to hold the exceptions that are thrown by `EventThreadCleanup.complete(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`. If null, all exceptions are ignored (but logged).
        `silent` - whether not to log the exception
      Since:
        3.6.3

    - #### newEventThreadSuspends

          public java.util.List<EventThreadSuspend> newEventThreadSuspends​(Component comp,
                                                                           Event evt,
                                                                           java.lang.Object obj)

      Constructs a list of `EventThreadSuspend` instances and invokes `EventThreadSuspend.beforeSuspend(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.lang.Object)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      Note: caller shall execute in the event processing thread.

      Parameters:
        `comp` - the component which the event is targeting
        `evt` - the event to process
        `obj` - which object that `Executions.wait(java.lang.Object)` is called with.
      Returns:
        a list of `EventThreadSuspend`, or null
      Throws:
        `UiException` - to prevent a thread from suspending

    - #### invokeEventThreadSuspends

          public void invokeEventThreadSuspends​(java.util.List<EventThreadSuspend> suspends,
                                                Component comp,
                                                Event evt)
                                         throws UiException

      Invokes `EventThreadSuspend.afterSuspend(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each relevant listener registered by `addListener(java.lang.Class<?>)`. Unlike `invokeEventThreadSuspends(java.util.List<org.zkoss.zk.ui.event.EventThreadSuspend>, org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`, caller shall execute in the main thread (a.k.a., servlet thread).

      Used only internally.

      Unlike `invokeEventThreadSuspends(java.util.List<org.zkoss.zk.ui.event.EventThreadSuspend>, org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`, exceptions are logged and ignored.

      Parameters:
        `suspends` - a list of `EventThreadSuspend` instances returned from `newEventThreadSuspends(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event, java.lang.Object)`, or null if no instance at all.
        `comp` - the component which the event is targeting
        `evt` - the event to process
      Throws:
        `UiException`

    - #### newEventThreadResumes

          public java.util.List<EventThreadResume> newEventThreadResumes​(Component comp,
                                                                         Event evt)
                                                                  throws UiException

      Constructs a list of `EventThreadResume` instances and invokes `EventThreadResume.beforeResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally (by `UiEngine` when resuming a suspended event thread). Notice: it executes in the main thread (i.e., the servlet thread).

      Parameters:
        `comp` - the component which the event is targeting
        `evt` - the event to process
      Returns:
        a list of `EventThreadResume` instances that are constructed in this method (and their `EventThreadResume.beforeResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` are called successfully), or null.
      Throws:
        `UiException` - to prevent a thread from being resumed if `EventThreadResume.beforeResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` throws an exception

    - #### invokeEventThreadResumes

          public void invokeEventThreadResumes​(java.util.List<EventThreadResume> resumes,
                                               Component comp,
                                               Event evt)
                                        throws UiException

      Invokes `EventThreadResume.afterResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each instance returned by `newEventThreadResumes(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`.

      Used only internally.

      It never throws an exception but logs and adds it to the errs argument, if not null.

      Parameters:
        `resumes` - a list of `EventThreadResume` instances returned from `newEventThreadResumes(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`, or null if no instance at all.
        `comp` - the component which the event is targeting
        `evt` - the event to process If null, all exceptions are ignored (but logged)
      Throws:
        `UiException`

    - #### invokeEventThreadResumeAborts

          public void invokeEventThreadResumeAborts​(Component comp,
                                                    Event evt)

      Invokes `EventThreadResume.abortResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `EventThreadResume` is constructed first, and then invoke `EventThreadResume.abortResume(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.event.Event)`.

      It never throws an exception but logging.

      Parameters:
        `comp` - the component which the event is targeting
        `evt` - the event to process

    - #### invokeWebAppInits

          public void invokeWebAppInits()
                                 throws UiException

      Invokes `WebAppInit.init(org.zkoss.zk.ui.WebApp)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `WebAppInit` is constructed first, and then invoke `WebAppInit.init(org.zkoss.zk.ui.WebApp)`.

      Throws:
        `UiException` - to prevent a webapp from being created

    - #### invokeWebAppCleanups

          public void invokeWebAppCleanups()

      Invokes `WebAppCleanup.cleanup(org.zkoss.zk.ui.WebApp)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `WebAppCleanup` is constructed first, and then invoke `WebAppCleanup.cleanup(org.zkoss.zk.ui.WebApp)`.

      It never throws an exception.

    - #### invokeSessionInits

          public void invokeSessionInits​(Session sess,
                                         java.lang.Object request)
                                  throws UiException

      Invokes `SessionInit.init(org.zkoss.zk.ui.Session, java.lang.Object)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `SessionInit` is constructed first, and then invoke `SessionInit.init(org.zkoss.zk.ui.Session, java.lang.Object)`.

      Parameters:
        `sess` - the session that is created
        `request` - the original request. If HTTP, it is javax.servlet.http.HttlServletRequest.
      Throws:
        `UiException` - to prevent a session from being created
      Since:
        3.0.1

    - #### invokeSessionCleanups

          public void invokeSessionCleanups​(Session sess)

      Invokes `SessionCleanup.cleanup(org.zkoss.zk.ui.Session)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `SessionCleanup` is constructed first, and then invoke `SessionCleanup.cleanup(org.zkoss.zk.ui.Session)`.

      It never throws an exception.

      Parameters:
        `sess` - the session that is being destroyed

    - #### invokeDesktopInits

          public void invokeDesktopInits​(Desktop desktop,
                                         java.lang.Object request)
                                  throws UiException

      Invokes `DesktopInit.init(org.zkoss.zk.ui.Desktop, java.lang.Object)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `DesktopInit` is constructed first, and then invoke `DesktopInit.init(org.zkoss.zk.ui.Desktop, java.lang.Object)`.

      Parameters:
        `desktop` - the desktop that is created
        `request` - the original request. If HTTP, it is javax.servlet.http.HttlServletRequest.
      Throws:
        `UiException` - to prevent a desktop from being created
      Since:
        3.0.1

    - #### invokeDesktopCleanups

          public void invokeDesktopCleanups​(Desktop desktop)

      Invokes `DesktopCleanup.cleanup(org.zkoss.zk.ui.Desktop)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `DesktopCleanup` is constructed first, and then invoke `DesktopCleanup.cleanup(org.zkoss.zk.ui.Desktop)`.

      It never throws an exception.

      Parameters:
        `desktop` - the desktop that is being destroyed

    - #### invokeExecutionInits

          public void invokeExecutionInits​(Execution exec,
                                           Execution parent)
                                    throws UiException

      Invokes `ExecutionInit.init(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.Execution)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `ExecutionInit` is constructed first, and then invoke `ExecutionInit.init(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.Execution)`.

      Parameters:
        `exec` - the execution that is created
        `parent` - the previous execution, or null if no previous at all
      Throws:
        `UiException` - to prevent an execution from being created

    - #### invokeExecutionCleanups

          public void invokeExecutionCleanups​(Execution exec,
                                              Execution parent,
                                              java.util.List<java.lang.Throwable> errs)

      Invokes `ExecutionCleanup.cleanup(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.Execution, java.util.List<java.lang.Throwable>)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      An instance of `ExecutionCleanup` is constructed first, and then invoke `ExecutionCleanup.cleanup(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.Execution, java.util.List<java.lang.Throwable>)`.

      It never throws an exception but logs and adds it to the errs argument, if not null.

      Parameters:
        `exec` - the execution that is being destroyed
        `parent` - the previous execution, or null if no previous at all
        `errs` - a list of exceptions (java.lang.Throwable) if any exception occurred before this method is called, or null if no exception at all. Note: you can manipulate the list directly to add or clean up exceptions. For example, if exceptions are fixed correctly, you can call errs.clear() such that no error message will be displayed at the client.

    - #### invokeURIInterceptors

          public void invokeURIInterceptors​(java.lang.String uri)

      Invokes `URIInterceptor.request(java.lang.String)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      If any of them throws an exception, the exception is propagated to the caller.

      Throws:
        `UiException` - if it is rejected by the interceptor. Use `Throwable.getCause()` to retrieve the cause.

    - #### invokeRequestInterceptors

          public void invokeRequestInterceptors​(Session sess,
                                                java.lang.Object request,
                                                java.lang.Object response)

      Invokes `RequestInterceptor.request(org.zkoss.zk.ui.Session, java.lang.Object, java.lang.Object)` for each relevant listener registered by `addListener(java.lang.Class<?>)`.

      Used only internally.

      If any of them throws an exception, the exception is propagated to the caller.

      Throws:
        `UiException` - if it is rejected by the interceptor. Use `Throwable.getCause()` to retrieve the cause.

    - #### addLabelLocation

          public void addLabelLocation​(java.lang.String location)

      Adds the location of a properties file for i18n labels.

      Default: none (/WEB-INF/zk-label.properties is assumed).

      Notice that this method has no effect after the web server has been started. Thus, it is suggested to use the label-location element in zk.xml instead.

      Since:
        5.0.7

    - #### getLabelLocations

          public java.lang.String[] getLabelLocations()

      Returns an array of the locations of properties files registered by `addLabelLocation(java.lang.String)`.
      Since:
        5.0.7

    - #### getComposer

          public Composer<?> getComposer​(Page page)
                                  throws java.lang.Exception

      Returns the system-level composer or null if none is registered. To register a system-level composer, use `addListener(java.lang.Class<?>)`.

      Notice that any number of composers can be registered, and a single composer is returned to represent them all.

      Throws:
        `java.lang.Exception`
      Since:
        5.0.1

    - #### getInitiators

          public Initiator[] getInitiators()

      Returns a readonly list of the system-level initiators. It is empty if none is registered. To register a system-level initiator, use `addListener(java.lang.Class<?>)`.
      Since:
        5.0.7

    - #### getNamespaceParsers

          public java.util.List<NamespaceParser> getNamespaceParsers()

      Returns a readonly list of the system-level NamespaceParsers. It is empty if none is registered. To register a system-level NamespaceParsers, use `addListener(java.lang.Class<?>)`.
      Since:
        7.0.3

    - #### getSEORenderers

          public SEORenderer[] getSEORenderers()

      Returns a readonly list of the system-level SEO renderer. It is empty if none is registered. To register a system-level SEO renderers, use `addListener(java.lang.Class<?>)`.

      Notice that, once registered, an instance is instantiated before invoking `SEORenderer.render(org.zkoss.zk.ui.Page, java.io.Writer)`.

      Since:
        5.0.7

    - #### init

          public void init​(Page page)

      Initializes the given page with the variable resolvers registered by `addListener(java.lang.Class<?>)`. It must be called before accessing a page (actually in `PageCtrl.preInit()`).
      Since:
        5.0.4

    - #### getPropertiesRenderers

          public PropertiesRenderer[] getPropertiesRenderers()

      Returns a readonly list of the system-level properties renders. It is empty if none is registered. To register a system-level properties renders, use `addListener(java.lang.Class<?>)`.

      Notice that, once registered, it is instantiated immediately, and the same instance is shared for rendering the properties of every component.

      Since:
        5.0.7

    - #### afterComponentAttached

          public void afterComponentAttached​(Component comp,
                                             Page page)

      Invokes `UiLifeCycle.afterComponentAttached(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Page)` when a component is attached to a page.
      Since:
        3.0.6

    - #### afterComponentDetached

          public void afterComponentDetached​(Component comp,
                                             Page prevpage)

      Invokes `UiLifeCycle.afterComponentDetached(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Page)` when a component is detached from a page.
      Since:
        3.0.6

    - #### invokeCallback

          public void invokeCallback​(java.lang.String name,
                                     java.lang.Object data)

      Invokes a callback function `Callback.call(Object data)`
      Parameters:
        `name` - the name of the callback function.
        `data` - the parameter for the callback function.
      Since:
        8.5.2

    - #### registerCallBack

          public void registerCallBack​(java.lang.String name,
                                       Callback callback)

      Register a callback function `Callback.call(Object data)`
      Parameters:
        `name` - the name of the callback function.
        `callback` - the callback function to register into Configuration class.
      Since:
        8.5.2

    - #### unregisterCallBack

          public void unregisterCallBack​(java.lang.String name)

      Unregister a callback function `Callback.call(Object data)`
      Parameters:
        `name` - the name of the callback function.
      Since:
        8.5.2

    - #### hasCallBack

          public boolean hasCallBack​(java.lang.String name)

      Returns if a callback function `Callback.call(Object data)` is registered.
      Parameters:
        `name` - the name of the callback function.
      Returns:
        If a callback function is registered.
      Since:
        8.5.2

    - #### afterShadowAttached

          public void afterShadowAttached​(ShadowElement shadow,
                                          Component host)

      Invokes `UiLifeCycle.afterShadowAttached(ShadowElement, Component)` when a shadow is attached to a host.
      Since:
        8.0.0

    - #### afterShadowDetached

          public void afterShadowDetached​(ShadowElement shadow,
                                          Component prevhost)

      Invokes `UiLifeCycle.afterShadowDetached(ShadowElement, Component)` when a shadow is detached from a host.
      Since:
        8.0.0

    - #### afterComponentMoved

          public void afterComponentMoved​(Component parent,
                                          Component child,
                                          Component prevparent)

      Invokes `UiLifeCycle.afterComponentMoved(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` when a component is moved (a.k.a., page changed).
      Since:
        3.0.6

    - #### afterPageAttached

          public void afterPageAttached​(Page page,
                                        Desktop desktop)

      Invokes `UiLifeCycle.afterPageAttached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Desktop)` when a compnent's parent is changed.
      Since:
        3.0.6

    - #### afterPageDetached

          public void afterPageDetached​(Page page,
                                        Desktop prevdesktop)

      Invokes `UiLifeCycle.afterPageDetached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Desktop)` when a compnent's parent is changed.
      Since:
        3.0.6

    - #### addThemeURI

          public void addThemeURI​(java.lang.String uri)

      Adds an CSS resource that will be generated for each ZUML desktop.

      Note: if `ThemeProvider` is specified (`setThemeProvider(org.zkoss.zk.ui.util.ThemeProvider)`), the final theme URIs generated depend on `ThemeProvider.getThemeURIs(org.zkoss.zk.ui.Execution, java.util.List<java.lang.Object>)`.

    - #### getThemeURIs

          public java.lang.String[] getThemeURIs()

      Returns a readonly list of the URI of the CSS resources that will be generated for each ZUML desktop (never null).

      Default: an array with zero length.

    - #### addDisabledThemeURI

          public void addDisabledThemeURI​(java.lang.String uri)

      Specifies what theme URI to be disabled.

      Note: if `ThemeProvider` is used (`setThemeProvider(org.zkoss.zk.ui.util.ThemeProvider)`), the URIs of the theme depend on `ThemeProvider.getThemeURIs(org.zkoss.zk.ui.Execution, java.util.List<java.lang.Object>)`.

      Parameters:
        `uri` - the theme URI to disable
      Since:
        3.0.0

    - #### getDisabledThemeURIs

          public java.util.Set<java.lang.String> getDisabledThemeURIs()

      Returns a set of the theme URIs that are disabled (never null).
      Since:
        3.0.0
      See Also:
        `addDisabledThemeURI(java.lang.String)`

    - #### addThemeURIHandler

          public void addThemeURIHandler​(ThemeURIHandler themeURIHandler)

      Add a `ThemeURIHandler`.

      Note: if `ThemeProvider` is specified (`setThemeProvider(org.zkoss.zk.ui.util.ThemeProvider)`), the final generated theme URIs depend on `ThemeProvider.getThemeURIs(org.zkoss.zk.ui.Execution, java.util.List<java.lang.Object>)`.

      Since:
        9.6.0

    - #### getThemeURIHandlers

          public java.util.List<ThemeURIHandler> getThemeURIHandlers()

      Returns a list of `ThemeURIHandler`.
      Since:
        9.6.0

    - #### getThemeProvider

          public ThemeProvider getThemeProvider()

      Returns the theme provider for the current execution, or null if not available.

      Default: null.

      Note: if specified, the final theme URIs is decided by the provider. The URIs specified in `getThemeURIs()` are passed to provider, and it has no effect if the provider decides to ignore them.

      Since:
        3.0.0
      See Also:
        `getThemeURIs()`, `getDisabledThemeURIs()`

    - #### setThemeProvider

          public void setThemeProvider​(ThemeProvider provider)

      Sets the theme provider for the current execution, or null if not available.
      Parameters:
        `provider` - the theme provide. If null, the default theme URIs will be used.
      Since:
        3.0.0
      See Also:
        `getThemeProvider()`

    - #### setUiEngineClass

          public void setUiEngineClass​(java.lang.Class<?> cls)

      Sets the class used to handle UI loading and updates, or null to use the default. It must implement `UiEngine`.

    - #### getUiEngineClass

          public java.lang.Class<?> getUiEngineClass()

      Returns the class used to handle UI loading and updates, or null if default is used. It must implement `UiEngine`.

    - #### setWebAppClass

          public void setWebAppClass​(java.lang.Class<?> cls)

      Sets the class used to represent this Web application, or null to use the default. It must implement `WebApp` and `WebAppCtrl`

      Note: you have to set the class before `WebApp` is created. Otherwise, it won't have any effect.

    - #### getWebAppClass

          public java.lang.Class<?> getWebAppClass()

      Returns the class used to represent this Web application, or null if default is used. It must implement `WebApp` and `WebAppCtrl`

    - #### setWebAppFactoryClass

          public void setWebAppFactoryClass​(java.lang.Class<?> cls)

      Sets the class used to instantiate an instance representing this Web application, or null to use the default.

      Note: `setWebAppClass(java.lang.Class<?>)` has the higher priority if not null.

      Note: you have to set the class before `WebApp` is created. Otherwise, it won't have any effect.

      Parameters:
        `cls` - the class that implements `WebAppFactory`.
      Since:
        6.0.0

    - #### getWebAppFactoryClass

          public java.lang.Class<?> getWebAppFactoryClass()

      Returns the class used to instantiate an instance representing this Web application, or null if default is used. It must implement `WebAppFactory`.

      Note: `getWebAppClass()` has the higher priority if not null.

      Since:
        6.0.0

    - #### setDesktopCacheProviderClass

          public void setDesktopCacheProviderClass​(java.lang.Class<?> cls)

      Sets the class used to provide the desktop cache, or null to use the default. It must implement `DesktopCacheProvider`.

      Note: you have to set the class before `WebApp` is created. Otherwise, it won't have any effect.

    - #### getDesktopCacheProviderClass

          public java.lang.Class<?> getDesktopCacheProviderClass()

      Returns the class used to provide the desktop cache, or null if default is used. It must implement `DesktopCacheProvider`.

    - #### setUiFactoryClass

          public void setUiFactoryClass​(java.lang.Class<?> cls)

      Sets the class used to instantiate desktops, pages and components, or null to use the default. It must implement `UiFactory`,

      Note: you have to set the class before `WebApp` is created. Otherwise, it won't have any effect.

    - #### getUiFactoryClass

          public java.lang.Class<?> getUiFactoryClass()

      Returns the class used to instantiate desktops, pages and components, or null if default is used. It must implement `UiFactory`,

    - #### setFailoverManagerClass

          public void setFailoverManagerClass​(java.lang.Class<?> cls)

      Sets the class used to handle the failover mechanism, or null if no custom failover mechanism. It must implement `FailoverManager`.

      Note: you have to set the class before `WebApp` is created. Otherwise, it won't have any effect.

    - #### getFailoverManagerClass

          public java.lang.Class<?> getFailoverManagerClass()

      Returns the class used to handle the failover mechanism, or null if no custom failover mechanism. It must implement `FailoverManager`.

    - #### setIdGeneratorClass

          public void setIdGeneratorClass​(java.lang.Class<?> cls)

      Sets the class that is used to generate UUID/ID of desktop, page and components, or null to use the default. It must implement `IdGenerator`.

      Note: you have to set the class before `WebApp` is created. Otherwise, it won't have any effect.

      Since:
        2.4.1

    - #### getIdGeneratorClass

          public java.lang.Class<?> getIdGeneratorClass()

      Returns the class used to generate UUID/ID for desktop, page and components, or null if the default shall be used. It must implement `IdGenerator`
      Since:
        2.4.1

    - #### setSessionCacheClass

          public void setSessionCacheClass​(java.lang.Class<?> cls)

      Sets the class that is used to store ZK sessions, or null to use the default. It must implement `SessionCache`.

      Note: you have to set the class before `WebApp` is created. Otherwise, it won't have any effect.

      Since:
        3.0.5

    - #### getSessionCacheClass

          public java.lang.Class<?> getSessionCacheClass()

      Returns the class used to store ZK sessions, or null if the default shall be used. It must implement `SessionCache`.
      Since:
        3.0.5

    - #### setFileItemFactoryClass

          public void setFileItemFactoryClass​(java.lang.Class<?> cls)

      Sets the class that is used to create a file item for fileupload, or null to use the default. It must implement `DiskFileItemFactory`.
      Since:
        8.0.2

    - #### getFileItemFactoryClass

          public java.lang.Class<?> getFileItemFactoryClass()

      Returns the class used to create a file item for fileupload, or null if the default shall be used. It must implement `DiskFileItemFactory`.
      Since:
        8.0.2

    - #### setAuDecoderClass

          public void setAuDecoderClass​(java.lang.Class<?> cls)

      Sets the class that is used to decode AU requests, or null to use the default. It must implement `AuDecoder`.

      Note: you have to set the class before `WebApp` is created. Otherwise, it won't have any effect.

      Since:
        5.0.4

    - #### getAuDecoderClass

          public java.lang.Class<?> getAuDecoderClass()

      Returns the class used to decode AU requests, or null if the default shall be used. It must implement `AuDecoder`.
      Since:
        5.0.4

    - #### setMaxProcessTime

          public void setMaxProcessTime​(int time)

      Specifies the maximal allowed time to process events, in milliseconds. ZK will keep processing the requests until all requests are processed, or the maximal allowed time expires.

      Default: 3000.

      Note: since 3.0.0, this setting has no effect on AU requests. It controls only the requests from the client-polling server push.

      Parameters:
        `time` - the maximal allowed time to process events. It must be positive.

    - #### getMaxProcessTime

          public int getMaxProcessTime()

      Returns the maximal allowed time to process events, in milliseconds. It is always positive.

    - #### setMaxUploadSize

          public void setMaxUploadSize​(int sz)

      Specifies the maximal allowed upload size, in kilobytes.

      Default: 5120.

      Parameters:
        `sz` - the maximal allowed upload size. A negative value indicates there is no limit.

    - #### getMaxUploadSize

          public int getMaxUploadSize()

      Returns the maximal allowed upload size, in kilobytes, or a negative value if no limit.

    - #### setFileSizeThreshold

          public void setFileSizeThreshold​(int sz)

      Specifies the threshold at which a temporary file is created as a buffer, in kilobytes.

      Default: 128.

      Parameters:
        `sz` - the file size threshold A negative value implies default setting.
      Since:
        5.0.8

    - #### getFileSizeThreshold

          public int getFileSizeThreshold()

      Returns the threshold at which a temporary file is created as a buffer, in kilobytes, or a negative value which implies default setting.
      Since:
        5.0.8

    - #### setFileRepository

          public void setFileRepository​(java.lang.String directory)

      Sets the directory in which uploaded files will be stored, if stored on disk.
      Parameters:
        `directory` -
      Since:
        8.0.2

    - #### getFileRepository

          public java.lang.String getFileRepository()

      Returns the directory in which uploaded files will be stored, if stored on disk.

      Default: null

      Since:
        8.0.2

    - #### getUploadCharset

          public java.lang.String getUploadCharset()

      Returns the charset used to encode the uploaded text file (never null).

      Default: UTF-8.

      See Also:
        `getUploadCharsetFinder()`

    - #### setUploadCharset

          public void setUploadCharset​(java.lang.String charset)

      Sets the charset used to encode the upload text file.

      Note: `setUploadCharsetFinder(org.zkoss.zk.ui.util.CharsetFinder)` has the higher priority.

      Parameters:
        `charset` - the charset to use. If null or empty, UTF-8 is assumed.
      See Also:
        `setUploadCharsetFinder(org.zkoss.zk.ui.util.CharsetFinder)`

    - #### getUploadCharsetFinder

          public CharsetFinder getUploadCharsetFinder()

      Returns the finder that is used to decide the character set for the uploaded text file(s), or null if not available.

      Default: null

      Since:
        3.0.0
      See Also:
        `getUploadCharset()`

    - #### setUploadCharsetFinder

          public void setUploadCharsetFinder​(CharsetFinder finder)

      Sets the finder that is used to decide the character set for the uploaded text file(s), or null if not available.

      It has the higher priority than `setUploadCharset(java.lang.String)`. In other words, `getUploadCharset()` is used only if this method returns null or `CharsetFinder.getCharset(java.lang.String, java.io.InputStream)` returns null.

      Since:
        3.0.0
      See Also:
        `setUploadCharset(java.lang.String)`

    - #### setDesktopMaxInactiveInterval

          public void setDesktopMaxInactiveInterval​(int secs)

      Specifies the time, in seconds, between client requests before ZK will invalidate the desktop.

      Default: 3600 (1 hour).

      A negative value indicates the desktop should never timeout.

    - #### getDesktopMaxInactiveInterval

          public int getDesktopMaxInactiveInterval()

      Returns the time, in seconds, between client requests before ZK will invalidate the desktop.

      Notice that this timeout is used only if JVM starts GC when the memory is running low.

      A negative value indicates the desktop should never timeout.

    - #### setProcessingPromptDelay

          public void setProcessingPromptDelay​(int minisecs)

      Specifies the time, in milliseconds, before ZK Client Engine shows a dialog to prompt users that the request is in processing.

      Default: 900

    - #### getProcessingPromptDelay

          public int getProcessingPromptDelay()

      Returns the time, in milliseconds, before ZK Client Engine shows a dialog to prompt users that the request is in processing.

    - #### setTooltipDelay

          public void setTooltipDelay​(int minisecs)

      Specifies the time, in milliseconds, before ZK Client Engine shows the tooltip when a user moves the mouse over particular UI components.

      Default: 800

    - #### getTooltipDelay

          public int getTooltipDelay()

      Returns the time, in milliseconds, before ZK Client Engine shows the tooltip when a user moves the mouse over particular UI components.

    - #### setAutoResendTimeout

          public void setAutoResendTimeout​(int minisecs)

      Specifies the timeout, in milliseconds, to re-send the AU request when the server's service unavailable or timeout.

      Default: 200

      Since:
        6.5.2

    - #### getAutoResendTimeout

          public int getAutoResendTimeout()

      Returns the timeout, in milliseconds, for re-sending the AU request when the server's service unavailable or timeout.
      Since:
        6.5.2

        Default: 200

    - #### isCrawlable

          public boolean isCrawlable()

      Returns whether this Web application can be crawled by search engines. Notice that there is some performance loss for huge web pages.

      Default: false.

      Since:
        5.0.0

    - #### setCrawlable

          public void setCrawlable​(boolean crawlable)

      Sets whether this Web application is crawlable. Make a Web application that allows search engines to crawl the application. Notice that there is some performance loss for huge web pages. (EE only)
      Since:
        5.0.0

    - #### isCspEnabled

          public boolean isCspEnabled()

      Returns whether this Web application enables Content Security Policy (CSP). It is required for other CSP settings and applies a default policy when enabled.

      Default: false.

      Since:
        10.3.0

    - #### setCspEnabled

          public void setCspEnabled​(boolean cspEnabled)

      Sets whether CSP is enabled.
      Since:
        10.3.0

    - #### isCspStrictDynamicEnabled

          public boolean isCspStrictDynamicEnabled()

      Returns whether this Web application enables nonce-based strict CSP mode.

      Default: false.

      Since:
        10.3.0

    - #### setCspStrictDynamicEnabled

          public void setCspStrictDynamicEnabled​(boolean cspStrictDynamicEnabled)

      Sets whether nonce-based strict CSP mode is enabled.
      Since:
        10.3.0

    - #### getCspPolicy

          public java.lang.String getCspPolicy()

      Returns the developer-defined policy used to override the default CSP rules, or null if not specified.
      Returns:
        the current Csp Header Content
      Since:
        10.3.0

    - #### setCspPolicy

          public void setCspPolicy​(java.lang.String policy)

      Sets the developer-defined policy used to override the default CSP rules.
      Parameters:
        `policy` - the CSP policy to use, or null to use the default
      Since:
        10.3.0

    - #### isCspReportOnly

          public boolean isCspReportOnly()

      Returns whether CSP is enforced in report-only mode.

      Default: false.

      Since:
        10.3.0

    - #### setCspReportOnly

          public void setCspReportOnly​(boolean cspReportOnly)

      Sets whether to enforce CSP in report-only mode.
      Since:
        10.3.0

    - #### getCspReportURI

          public java.lang.String getCspReportURI()

      Returns the URI destination for CSP violation reports, or null if not specified.

      Default: null.

      Since:
        10.3.0

    - #### setCspReportURI

          public void setCspReportURI​(java.lang.String cspReportURI)

      Sets the URI destination for CSP violation reports.
      Parameters:
        `cspReportURI` - the URI to send CSP reports to, or null to disable reporting
      Since:
        10.3.0

    - #### getCspProvider

          public CspProvider getCspProvider()

      Returns the CSP provider responsible for generating the CSP header and managing nonce, or null if not available.

      Default: an instance of `CspProviderImpl`.

      Since:
        10.3.0

    - #### setCspProvider

          public void setCspProvider​(CspProvider cspProvider)

      Sets the CSP provider.
      Parameters:
        `cspProvider` - the CSP provider to use, or null to use the default
      Since:
        10.3.0

    - #### getTimeoutURI

          public URIInfo getTimeoutURI​(java.lang.String deviceType)

      Returns the timeout URI for this device. It is used to show the error message if the desktop being requested is not found. It is usually caused by session timeout.

      Default: null (to shown an error message).

      Parameters:
        `deviceType` - the device type: ajax or mil. If null, ajax is assumed.
      Since:
        3.6.3

    - #### setTimeoutURI

          public URIInfo setTimeoutURI​(java.lang.String deviceType,
                                       java.lang.String timeoutURI,
                                       int type)

      Sets the timeout URI. It is used to show the error message if the desktop being requested is not found. It is usually caused by session timeout.
      Parameters:
        `deviceType` - the device type: ajax or mil. If null, ajax is assumed.
        `timeoutURI` - the timeout URI. If empty, it means to reload the same page. If null, an error message is shown instead of redirecting to another page.
        `type` - how to handle the timeout URI. It is one of `URIInfo.SEND_REDIRECT` or `URIInfo.POPUP`. However, it supports only `URIInfo.SEND_REDIRECT` currently.
      Returns:
        the previous timeout URI, or null if not available.
      Since:
        3.6.3

    - #### getTimeoutMessage

          public java.lang.String getTimeoutMessage​(java.lang.String deviceType)

      Returns the timeout message for this device, or null if the default message is preferred. It is used only if `getTimeoutURI(java.lang.String)` returns null.
      Since:
        5.0.5
      See Also:
        `setTimeoutMessage(java.lang.String, java.lang.String)`

    - #### setTimeoutMessage

          public java.lang.String setTimeoutMessage​(java.lang.String deviceType,
                                                    java.lang.String message)

      Sets the timeout message for this device, or null if the default message is preferred. It is used only if `getTimeoutURI(java.lang.String)` returns null.

      To specify an I18N label, prefix the key with `label:`. To specify the JavaScript code, prefix the code with `script:`. Refer to ZK Configuration Reference for more information.

      Returns:
        the previous message, if any
      Since:
        5.0.5

    - #### isAutomaticTimeout

          public boolean isAutomaticTimeout​(java.lang.String deviceType)

      Returns whether to automatically trigger the timeout at the client. Refer to `setAutomaticTimeout(java.lang.String, boolean)` for details.
      Parameters:
        `deviceType` - the device type: ajax or mil. If null, ajax is assumed.
      Since:
        3.6.3
      See Also:
        `setAutomaticTimeout(java.lang.String, boolean)`, `getTimeoutURI(java.lang.String)`

    - #### setAutomaticTimeout

          public boolean setAutomaticTimeout​(java.lang.String deviceType,
                                             boolean auto)

      Sets whether to automatically trigger the timeout at the client.

      Default: false. It means this page is redirected to the timeout URI when the use takes some action after timeout. In other words, nothing happens if the user does nothing. If it is set to true, it is redirected as soon as the timeout URI, no matter the user takes any action.

      Parameters:
        `deviceType` - the device type: ajax or mil. If null, ajax is assumed.
      Since:
        3.6.3
      See Also:
        `setTimeoutURI(java.lang.String, java.lang.String, int)`

    - #### setClientErrorReload

          public java.lang.String setClientErrorReload​(java.lang.String deviceType,
                                                       int errCode,
                                                       java.lang.String uri,
                                                       java.lang.String connType)

      Sets the URI to redirect to, when ZK Client Engine receives an error.
      Parameters:
        `deviceType` - the device type: ajax or mil. If null, ajax is assumed.
        `errCode` - the error code.
        `uri` - the URI to redirect to. It cannot be null. If empty, the client will reload the same page again. If null, it is the same as `removeClientErrorReload(java.lang.String, int, java.lang.String)`
        `connType` - the connection type: au or server-push. If null, "au" is assumed.
      Returns:
        the previous URI associated with the specified error code
      Since:
        3.6.3

    - #### removeClientErrorReload

          public java.lang.String removeClientErrorReload​(java.lang.String deviceType,
                                                          int errCode,
                                                          java.lang.String connType)

      Removes the URI to redirect to, when ZK Client Engine receives an error.
      Parameters:
        `deviceType` - the device type: ajax or mil. If null, ajax is assumed.
        `errCode` - the error code.
        `connType` - the connection type: au or server-push. If null, "au" is assumed.
      Returns:
        the previous URI associated with the specified error code
      Since:
        3.6.3

    - #### getClientErrorReload

          public java.lang.String getClientErrorReload​(java.lang.String deviceType,
                                                       int errCode,
                                                       java.lang.String connType)

      Returns the URI that is associated with the specified error code, or null if no URI is associated.
      Parameters:
        `deviceType` - the device type: ajax or mil. If null, ajax is assumed.
        `errCode` - the error code.
        `connType` - the connection type: au or server-push. If null, "au" is assumed.
      Since:
        3.6.3

    - #### getClientErrorReloads

          public java.lang.Object[][] getClientErrorReloads​(java.lang.String deviceType,
                                                            java.lang.String connType)

      Returns an array of pairs of the error code and URI info of the specified device and connection (never null).

      Default: none (none since 3.6.0, while older version: 302, 401 and 403 are associated with an empty URI).

      Parameters:
        `deviceType` - the device type: ajax or mil. If null, ajax is assumed.
        `connType` - the connection type: au or server-push. If null, "au" is assumed.
      Returns:
        an array of pairs (two-element arrays) of the error code and URI info. In other words, each element of the returned array is a pair of Integer and `URIInfo`. For example, [[410, new URIInfo("/login.zul")], [310, new URIInfo("/login2.zul")]].
      Since:
        3.6.3

    - #### setSessionMaxInactiveInterval

          public void setSessionMaxInactiveInterval​(int secs)

      Specifies the time, in seconds, between client requests before ZK will invalidate the session.

      Default: 0 (means the system default).

      See Also:
        `setTimerKeepAlive(boolean)`, `Session.setMaxInactiveInterval(int)`

    - #### getSessionMaxInactiveInterval

          public int getSessionMaxInactiveInterval()

      Returns the time, in seconds, between client requests before ZK will invalidate the session.

      Default: 0 (means the system default).

      A negative value indicates that there is no limit. Zero means to use the system default (usually defined in web.xml).

      See Also:
        `isTimerKeepAlive()`, `Session.getMaxInactiveInterval()`

    - #### setSessionMaxDesktops

          public void setSessionMaxDesktops​(int max)

      Specifies the maximal allowed number of desktop per session.

      Default: 15.

      A negative value indicates there is no limit.

      Since:
        3.0.1

    - #### getSessionMaxDesktops

          public int getSessionMaxDesktops()

      Returns the maximal allowed number of desktop per session.

      A negative value indicates there is no limit.

      Since:
        3.0.1

    - #### setSessionMaxRequests

          public void setSessionMaxRequests​(int max)

      Specifies the maximal allowed number of concurrent requests per session.

      Default: 5.

      A negative value indicates there is no limit, but it is not recommended due to the possibility of the DoS attacks.

      Since:
        3.0.1

    - #### getSessionMaxRequests

          public int getSessionMaxRequests()

      Returns the maximal allowed number of concurrent requests per session.

      A negative value indicates there is no limit, but it is not recommended due to the possibility of the DoS attacks.

      Since:
        3.0.1

    - #### setSessionMaxPushes

          public void setSessionMaxPushes​(int max)

      Specifies the maximal allowed number of concurrent server-pushes per session.

      Default: -1 (no limitation).

      Parameters:
        `max` - the maximal allowed number. A negative value indicates there is no limit.
      Since:
        5.0.0

    - #### getSessionMaxPushes

          public int getSessionMaxPushes()

      Returns the maximal allowed number of concurrent server-pushes per session.

    - #### setMaxSpareThreads

          public void setMaxSpareThreads​(int max)

      Specifies the maximal allowed number of the spare pool for queuing the event processing threads (per Web application).

      Default: 100.

      A negative value indicates there is no limit.

      ZK uses a thread pool to keep the idle event processing threads. It speeds up the service of an event by reusing the thread queued in this pool.

      See Also:
        `setMaxSuspendedThreads(int)`, `isEventThreadEnabled()`

    - #### getMaxSpareThreads

          public int getMaxSpareThreads()

      Returns the maximal allowed number of the spare pool for queuing event processing threads (per Web application).
      See Also:
        `isEventThreadEnabled()`

    - #### setMaxSuspendedThreads

          public void setMaxSuspendedThreads​(int max)

      Specifies the maximal allowed number of suspended event processing threads (per Web application).

      Default: -1 (no limit).

      A negative value indicates there is no limit.

      It is ignored if the use of the event processing thread is disable (`isEventThreadEnabled()`.

    - #### getMaxSuspendedThreads

          public int getMaxSuspendedThreads()

      Returns the maximal allowed number of suspended event processing threads (per Web application).

      It is ignored if the use of the event processing thread is disable (`isEventThreadEnabled()`.

      See Also:
        `isEventThreadEnabled()`

    - #### enableEventThread

          public void enableEventThread​(boolean enable)

      Deprecated.
      as of release 10.0.0. (not recommended to use in production)
      Sets whether to use the event processing thread.

      Default: false (disabled).

      Throws:
        `java.lang.IllegalStateException` - if there is suspended thread and use is false.

    - #### isEventThreadEnabled

          public boolean isEventThreadEnabled()

      Deprecated.
      as of release 10.0.0. (not recommended to use in production)
      Returns whether to use the event processing thread.

      Default: false (disabled).

    - #### enableZScript

          public void enableZScript​(boolean enable)

      Sets whether zscript is allowed.

      Default: true (enabled).

      Since:
        6.0.0

    - #### isZScriptEnabled

          public boolean isZScriptEnabled()

      Returns whether zscript is allowed.

      Default: true (enabled).

      Since:
        6.0.0

    - #### getMonitor

          public Monitor getMonitor()

      Returns the monitor for this application, or null if not set.

    - #### setMonitor

          public Monitor setMonitor​(Monitor monitor)

      Sets the monitor for this application, or null to disable it.

      Default: null.

      There is at most one monitor for each Web application. The previous monitor will be replaced when this method is called.

      In addition to call this method, you could specify a monitor in zk.xml

      Parameters:
        `monitor` - the performance meter. If null, the meter function is disabled.
      Returns:
        the previous monitor, or null if not available.

    - #### getPerformanceMeter

          public PerformanceMeter getPerformanceMeter()

      Returns the performance meter for this application, or null if not set.
      Since:
        3.0.0

    - #### setPerformanceMeter

          public PerformanceMeter setPerformanceMeter​(PerformanceMeter meter)

      Sets the performance meter for this application, or null to disable it.

      Default: null.

      There is at most one performance meter for each Web application. The previous meter will be replaced when this method is called.

      In addition to call this method, you could specify a performance meter in zk.xml

      Parameters:
        `meter` - the performance meter. If null, the meter function is disabled.
      Returns:
        the previous performance meter, or null if not available.
      Since:
        3.0.0

    - #### getExecutionMonitor

          public ExecutionMonitor getExecutionMonitor()

      Returns the execution monitor for this application, or null if not set.
      Since:
        6.0.0

    - #### setExecutionMonitor

          public ExecutionMonitor setExecutionMonitor​(ExecutionMonitor monitor)

      Sets the execution monitor for this application, or null to disable it.

      Default: null.

      There is at most one execution monitor for each Web application. The previous meter will be replaced when this method is called.

      In addition to call this method, you could specify an execution monitor in zk.xml

      Parameters:
        `monitor` - the execution monitor. If null, the monitor function is disabled.
      Returns:
        the previous execution monitor, or null if not available.
      Since:
        6.0.0

    - #### getDesktopRecycle

          public DesktopRecycle getDesktopRecycle()

      Returns the desktop recycle for this application, or null if not set.
      Since:
        5.0.0

    - #### setDesktopRecycle

          public DesktopRecycle setDesktopRecycle​(DesktopRecycle dtRecycle)

      Sets the desktop recycler for this application, or null to disable it.

      Default: null.

      There is at most one desktop recycle for each Web application. The previous instance will be replaced when this method is called.

      In addition to call this method, you could specify a desktop recycle in zk.xml

      Parameters:
        `dtRecycle` - the desktop recycle. If null, the recycle function is disabled.
      Returns:
        the previous desktop recycle, or null if not available.
      Since:
        5.0.0

    - #### getResponseCharset

          public java.lang.String getResponseCharset()

      Returns the charset used to generate the HTTP response or null to use the container's default. It is currently used by `DHtmlLayoutServlet`,

      Default: UTF-8.

    - #### setResponseCharset

          public void setResponseCharset​(java.lang.String charset)

      Sets the charset used to generate HTTP response. It is currently used by `DHtmlLayoutServlet`,
      Parameters:
        `charset` - the charset to use. If null or empty, the container's default is used.

    - #### getPreference

          public java.lang.String getPreference​(java.lang.String name,
                                                java.lang.String defaultValue)

      Returns the value of the preference defined in zk.xml, or by `setPreference(java.lang.String, java.lang.String)`.

      Preference is application specific. You can specify whatever you want as you specifying context-param for a Web application.

      Parameters:
        `defaultValue` - the default value that is used if the specified preference is not found.

    - #### setPreference

          public void setPreference​(java.lang.String name,
                                    java.lang.String value)

      Sets the value of the preference.

    - #### getPreferenceNames

          public java.util.Set<java.lang.String> getPreferenceNames()

      Returns a readonly set of all preference names.

    - #### addRichlet

          public java.lang.Object addRichlet​(java.lang.String name,
                                             java.lang.Class<?> richletClass,
                                             java.util.Map<java.lang.String,​java.lang.String> params)

      Adds the definition of a richlet.

      If there was a richlet associated with the same name, the the old richlet will be replaced.

      Parameters:
        `name` - the richlet name
        `params` - the initial parameters, or null if no initial parameter at all. Once called, the caller cannot access `params` any more.
      Returns:
        the previous richlet class or class-name with the specified name, or null if no previous richlet.

    - #### addRichlet

          public java.lang.Object addRichlet​(java.lang.String name,
                                             java.lang.String richletClassName,
                                             java.util.Map<java.lang.String,​java.lang.String> params)

      Adds the definition of a richlet.

      If there was a richlet associated with the same name, the the old servlet will be replaced.

      Parameters:
        `name` - the richlet name
        `richletClassName` - the class name. The class will be loaded only when the richlet is loaded.
        `params` - the initial parameters, or null if no initial parameter at all. Once called, the caller cannot access `params` any more.
      Returns:
        the previous richlet class or class-name with the specified name, or null if no previous richlet.

    - #### addRichlet

          public java.lang.Object addRichlet​(java.lang.String name,
                                             Richlet richlet)

      Adds the richlet.

      If there was a richlet associated with the same name, the the old one will be replaced.

      Parameters:
        `name` - the richlet name
        `richlet` - the richlet implemetation.
      Returns:
        the previous richlet class or class-name with the specified name, or null if no previous richlet.
      Since:
        7.0.2

    - #### removeRichlet

          public java.lang.Object removeRichlet​(java.lang.String name)

      Removes the richlet and associated richlet mappings.
      Parameters:
        `name` - the richlet name
      Returns:
        the removed richlet class or class-name with the specified name, or null if the richlet is not found.
      Since:
        7.0.2

    - #### addRichletMapping

          public void addRichletMapping​(java.lang.String name,
                                        java.lang.String path)

      Adds a richlet mapping.
      Parameters:
        `name` - the name of the richlet.
        `path` - the URL pattern. It must start with '/' and may end with '/*'.
      Throws:
        `UiException` - if the richlet is not defined yet. See `addRichlet(java.lang.String, java.lang.Class<?>, java.util.Map<java.lang.String, java.lang.String>)`.
      Since:
        2.4.0

    - #### getRichlet

          public Richlet getRichlet​(java.lang.String name)

      Returns an instance of richlet of the specified name, or null if not found.

    - #### getRichletByPath

          public Richlet getRichletByPath​(java.lang.String path)

      Returns an instance of richlet for the specified path, or null if not found.

    - #### detroyRichlets

          public void detroyRichlets()

      Destroys all richlets.

    - #### setKeepDesktopAcrossVisits

          public void setKeepDesktopAcrossVisits​(boolean keep)

      Specifies whether to keep the desktops across visits. If false, the desktops are removed when an user reloads an URL or browses to another URL.

      Default: false.

    - #### isKeepDesktopAcrossVisits

          public boolean isKeepDesktopAcrossVisits()

      Returns whether to keep the desktops across visits. If false, the desktops are removed when an user reloads an URL or browses to another URL.

    - #### setTimerKeepAlive

          public void setTimerKeepAlive​(boolean alive)

      Specifies whether to keep the session alive, when receiving the onTimer event.

      Default: false.

      A session is expired (and then invalidated), if it didn't receive any client request in the specified timeout interval (`getSessionMaxInactiveInterval()`). By setting this option to true, the session timeout will be reset when onTimer is received (just like any other event).

      Note: if true and the timer is shorter than the session timeout (`getSessionMaxInactiveInterval()`), the session is never expired.

      Parameters:
        `alive` - whether to keep the session alive when receiving onTimer
      Since:
        3.0.0

    - #### isTimerKeepAlive

          public boolean isTimerKeepAlive()

      Returns whether to keep the session alive, when receiving the onTimer event. In other words, it returns whether to reset the session timeout counter when receiving onTimer, just like any other events.
      Since:
        3.0.0

    - #### isDebugJS

          public boolean isDebugJS()

      Returns whether to debug JavaScript files. If true, it means the original (i.e., uncompressed) JavaScript files shall be loaded instead of the compressed JavaScript files.
      Since:
        3.0.4
      See Also:
        `setDebugJS(boolean)`

    - #### setDebugJS

          public void setDebugJS​(boolean debug)

      Sets whether to debug JavaScript files.

      Default: false.

      If true is specified, it will try to load the original Java (i.e., uncompressed) file instead of the compressed one. For example, if `ClassWebResource.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)` is called to load abc.js, and `isDebugJS()`, then `ClassWebResource.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)` will try to load abc.org.js first. If not found, it load ab.js insted.

      If `isDebugJS()` is false (default), abc.js is always loaded.

      Prior to 5.0.3, the setting won't affect JavaScript files that have been loaded. That is, the reboot is required.

      Parameters:
        `debug` - whether to debug JavaScript files. If true, the original JavaScript files shall be loaded instead of the compressed files.
      Since:
        3.0.4

    - #### setExpressionFactoryClass

          public void setExpressionFactoryClass​(java.lang.Class<? extends ExpressionFactory> expfcls)

      Sets the implementation of the expression factory that shall be used by the whole system.

      Default: null -- it means the org.zkoss.xel.el.ELFactory class (it requires zcommons-el.jar).

      Note: you can only specify an implementation that is compatible with JSP EL here, since ZK's builtin pages depend on it. However, you can use any factory you like in an individual page, as long as all expressions in the page follow the syntax of the evaluator you are using.

      Parameters:
        `expfcls` - the implemtation class, or null to use the default. Note: expfcls must implement `ExpressionFactory`.
      Since:
        3.0.0

    - #### getExpressionFactoryClass

          public java.lang.Class<? extends ExpressionFactory> getExpressionFactoryClass()

      Returns the implementation of the expression factory that is used by the whole system, or null if the system default is used.
      Since:
        3.0.0
      See Also:
        `setExpressionFactoryClass(java.lang.Class<? extends org.zkoss.xel.ExpressionFactory>)`

    - #### beforeSendEvent

          public Event beforeSendEvent​(Event event)

      Invokes `EventInterceptor.beforeSendEvent(org.zkoss.zk.ui.event.Event)` registered by `addListener(java.lang.Class<?>)` with a class implementing `EventInterceptor`.

      Used only internally.

      Since:
        3.0.0

    - #### beforePostEvent

          public Event beforePostEvent​(Event event)

      Invokes `EventInterceptor.beforePostEvent(org.zkoss.zk.ui.event.Event)` registered by `addListener(java.lang.Class<?>)` with a class implementing `EventInterceptor`.

      Used only internally.

      Since:
        3.0.0

    - #### beforeProcessEvent

          public Event beforeProcessEvent​(Event event)

      Invokes `EventInterceptor.beforeProcessEvent(org.zkoss.zk.ui.event.Event)` registered by `addListener(java.lang.Class<?>)` with a class implementing `EventInterceptor`.

      Used only internally.

      Since:
        3.0.0

    - #### afterProcessEvent

          public void afterProcessEvent​(Event event)

      Invokes `EventInterceptor.afterProcessEvent(org.zkoss.zk.ui.event.Event)` registered by `addListener(java.lang.Class<?>)` with a class implementing `EventInterceptor`.

      Used only internally.

      Since:
        3.0.0

    - #### getAttributes

          public java.util.Map<java.lang.String,​java.lang.Object> getAttributes()

      Returns a map of application-specific attributes.
      Since:
        5.0.0

    - #### getAttribute

          public java.lang.Object getAttribute​(java.lang.String name)

      Returns the value of an application-specific attribute, or null if not found.
      Since:
        5.0.0

    - #### setAttribute

          public java.lang.Object setAttribute​(java.lang.String name,
                                               java.lang.Object value)

      Returns the value of an application-specific attribute.
      Parameters:
        `value` - the value of the attribute. If null, it means removal, i.e., `removeAttribute(java.lang.String)`.
      Returns:
        the previous value, or null if no such value.
      Since:
        5.0.0

    - #### removeAttribute

          public java.lang.Object removeAttribute​(java.lang.String name)

      Removes the value of an application-specific attribute.
      Returns:
        the previous value, or null if no such value.
      Since:
        5.0.0

    - #### addClientPackage

          public void addClientPackage​(java.lang.String pkg)

      Adds a client (JavaScript) package that is provided by this server.

      Default: none.

      If no package is defined (default), ZK Client Engine assumes all packages coming from the server generating the HTML page.

      However, it might not be true if you want to load some client codes from different server (such as Ajax-asService). Therefore, you have to invoke this method to add the client packages if this server is going to provide JavaScript codes for other servers.

      Since:
        5.0.0

    - #### getClientPackages

          public java.lang.String[] getClientPackages()

      Returns a readonly list of the names of the client pages that are provided by this server
      Since:
        5.0.0

    - #### getEventTimeWarning

          public int getEventTimeWarning()

      Returns the time, in seconds, to show a warning message if an event has been processinged longer than it.

      Default: 600

      Since:
        3.6.3

    - #### setEventTimeWarning

          public void setEventTimeWarning​(int secs)

      Set the time, in seconds, to show a warning message if an event has been processinged longer than it.
      Parameters:
        `secs` - the number of seconds. If a non-positive number is specified, no warning message at all.
      Since:
        3.6.3

    - #### addErrorPage

          public java.lang.String addErrorPage​(java.lang.String deviceType,
                                               java.lang.Class<?> type,
                                               java.lang.String location)

      Adds an error page.
      Parameters:
        `deviceType` - the device type: ajax or mil
        `type` - what type of errors the error page is associated with.
        `location` - where is the error page.
      Returns:
        the previous location of the same error, or null if not defined yet.
      Since:
        2.4.1

    - #### getErrorPage

          public java.lang.String getErrorPage​(java.lang.String deviceType,
                                               java.lang.Throwable error)

      Returns the error page that matches the specified error, or null if not found.
      Parameters:
        `deviceType` - the device type: ajax or mil
        `error` - the exception being thrown
      Since:
        2.4.1

    - #### isCustomThemeProvider

          public boolean isCustomThemeProvider()

      Returns whether to use custom `ThemeProvider`. If true, it means the default ThemeProvider shall be ignored. It is set to true if declare custom ThemeProvider in zk.xml

      Default: false

      Since:
        7.0.0

    - #### setCustomThemeProvider

          public void setCustomThemeProvider​(boolean customThemeProvider)

      Sets whether to use custom `ThemeProvider`.

      Default: false.

      It is set to true if declare custom ThemeProvider in zk.xml

      Note: internal use only

      Parameters:
        `customThemeProvider` - whether to use custom `ThemeProvider`.
      Since:
        7.0.0

    - #### isCustomThemeRegistry

          public boolean isCustomThemeRegistry()

      Returns whether to use custom `ThemeRegistry`. If true, it means the default ThemeRegistry shall be ignored. It is set to true if declare custom ThemeRegistry in zk.xml

      Default: false

      Since:
        7.0.0

    - #### setCustomThemeRegistry

          public void setCustomThemeRegistry​(boolean customThemeRegistry)

      Sets whether to use custom `ThemeRegistry`.

      Default: false.

      It is set to true if declare custom ThemeRegistry in zk.xml.

      Note: internal use only

      Parameters:
        `customThemeRegistry` - whether to use custom `ThemeRegistry`.
      Since:
        7.0.0

    - #### isCustomThemeResolver

          public boolean isCustomThemeResolver()

      Returns whether to use custom `ThemeResolver`. If true, it means the default ThemeResolver shall be ignored. It is set to true if declare custom ThemeResolver in zk.xml

      Default: false

      Since:
        7.0.0

    - #### setCustomThemeResolver

          public void setCustomThemeResolver​(boolean customThemeResolver)

      Sets whether to use custom `ThemeResolver`.

      Default: false.

      It is set to true if declare custom ThemeResolver in zk.xml.

      Note: internal use only

      Parameters:
        `customThemeResolver` - whether to use custom `ThemeResolver`.
      Since:
        7.0.0

    - #### setInitCrashScript

          public void setInitCrashScript​(java.lang.String script)

      Sets user customized init crash script

      User can customize init crash page layout by defining a javascript function which is assigned to `window.zkShowCrashMessage`

      Parameters:
        `script` -
      Since:
        7.0.4

    - #### setInitCrashTimeout

          public void setInitCrashTimeout​(int timeout)

      Sets user customized init crash timeout

      User can customize init crash timeout by simply giving a number(sec).

      Parameters:
        `timeout` -
      Since:
        7.0.4

    - #### getInitCrashScript

          public java.lang.String getInitCrashScript()

      Returns init crash script, if null, use default, see crashmsg.js
      Returns:
        String
      Since:
        7.0.4

    - #### getInitCrashTimeout

          public int getInitCrashTimeout()

      Returns init crash timeout, if -1, use default, which is 60 sec
      Returns:
        int
      Since:
        7.0.4

    - #### getBinderInitAttribute

          public java.lang.String getBinderInitAttribute()

      Returns binder init attribute name
      Returns:
        String
      Since:
        8.0.0

    - #### setBinderInitAttribute

          public void setBinderInitAttribute​(java.lang.String binderInitAttribute)

      Set binder init attribute name
      Since:
        8.0.0

    - #### getBinderAnnotations

          public java.util.Set<java.lang.String> getBinderAnnotations()

      Returns binder annotations
      Returns:
        Set
      Since:
        8.0.0

    - #### setBinderAnnotations

          public void setBinderAnnotations​(java.util.Set<java.lang.String> binderAnnotations)

      Set binder annotations
      Since:
        8.0.0

    - #### addDataHandler

          public void addDataHandler​(DataHandlerInfo info)

      Adds client data attribute handler
      Since:
        8.0.0

    - #### getDataHandlers

          public java.util.Map<java.lang.String,​DataHandlerInfo> getDataHandlers()

      Returns all of the client data attribute handlers
      Since:

    - #### enableSourceMap

          public void enableSourceMap​(boolean enable)

      Sets whether source map is enabled.

      Default: false (disabled).

      Since:
        8.5.0

    - #### isSourceMapEnabled

          public boolean isSourceMapEnabled()

      Returns whether source map is enabled.

      Default: false (disabled).

      Since:
        8.5.0

    - #### enableHistoryState

          public void enableHistoryState​(boolean enable)

      Sets whether history state handle is enabled. If disabled, ZK won't generate any onHistoryPopState event even if history state is popped. It is desirable to avoid unnecessary events back to server if history state is handled by front-end.

      Default: true (enabled).

      Since:
        8.6.1

    - #### isHistoryStateEnabled

          public boolean isHistoryStateEnabled()

      Returns whether history state handle is enabled.

      Default: true (enabled).

      Since:
        8.6.1

    - #### setSendClientErrors

          public void setSendClientErrors​(boolean send)

      Sets whether to send client errors to the server for logging the page url where the error occurred and its stack trace.

      Default: false.

      Since:
        10.0.0

    - #### isSendClientErrors

          public boolean isSendClientErrors()

      Returns whether to send client errors to the server for logging the page url where the error occurred and its stack trace.

      Default: false.

      Since:
        10.0.0