ZK Configuration"

From Documentation
Line 17: Line 17:
 
<javadoc>org.zkoss.zk.ui.http.SerializableUiFactory</javadoc> is the UI factory that will instantiate serializable sessions such that the sessions, components, pages and desktops will be serialized when a session is about to deactivate.
 
<javadoc>org.zkoss.zk.ui.http.SerializableUiFactory</javadoc> is the UI factory that will instantiate serializable sessions such that the sessions, components, pages and desktops will be serialized when a session is about to deactivate.
  
  [Required]
+
=Turn on ClusterSessionPath for WebLogic and GAE=
 +
  [Required if WebLogic and GAE]
 
  [Since 5.0.8]
 
  [Since 5.0.8]
If you want to use ZK with Weblogic clustering server or cloud environment (such as Google App Engine), You have to add the following definition:
+
 
 +
WebLogic clustering server and GAE (Google App Engine) minimize the synchronization of the session states by assuming nothing changed, if no session attribute has been modified in a HTTP request. Thus, you have to specify the following configuration in <tt>WEB-INF/zk.xml</tt> to enforce the server to synchronize the states for each Ajax request.
 +
 
 
<source lang="xml">
 
<source lang="xml">
 
<zk>
 
<zk>
Line 27: Line 30:
 
</zk>
 
</zk>
 
</source>
 
</source>
<javadoc>org.zkoss.zkplus.cluster.ClusterSessionPatch</javadoc> is a execution cleanup listener, it will update the ZK <javadoc>org.zkoss.zk.ui.Session</javadoc> that store in the native session when receive each request.
+
 
 +
<blockquote>
 +
----
 +
Under the hub: <javadoc>org.zkoss.zkplus.cluster.ClusterSessionPatch</javadoc> is an <javadoc type="interface">org.zkoss.zk.util.ExecutionCleanup</javadoc> listener that updates an session attribute holding <javadoc type="interface">org.zkoss.zk.ui.Session</javadoc> for each request.
 +
</blockquote>
  
 
=Turn on Log=
 
=Turn on Log=

Revision as of 01:12, 28 June 2011


ZK Configuration


Turn on Serializable UI Factory

[Required]

To use ZK in a clustering environment, you have to use the serializable UI factory. It could be done by specifying the following statement in WEB-INF/zk.xml:

<zk>
	<system-config>
		<ui-factory-class>org.zkoss.zk.ui.http.SerializableUiFactory</ui-factory-class>
	</system-config>
</zk>

SerializableUiFactory is the UI factory that will instantiate serializable sessions such that the sessions, components, pages and desktops will be serialized when a session is about to deactivate.

Turn on ClusterSessionPath for WebLogic and GAE

[Required if WebLogic and GAE]
[Since 5.0.8]

WebLogic clustering server and GAE (Google App Engine) minimize the synchronization of the session states by assuming nothing changed, if no session attribute has been modified in a HTTP request. Thus, you have to specify the following configuration in WEB-INF/zk.xml to enforce the server to synchronize the states for each Ajax request.

<zk>
	<listener>
		<listener-class>org.zkoss.zkplus.cluster.ClusterSessionPatch</listener-class>
	</listener>
</zk>

Under the hub: ClusterSessionPatch is an ExecutionCleanup listener that updates an session attribute holding Session for each request.

Turn on Log

[Optional]

If an attribute or a listener is not serializable, ZK will skip it, i.e., not to serialize it (similar to how a Servlet container serializes the attributes of sessions). It is sometimes hard to know what are ignored, since it is common for a developer to forget to declare a value or a listener as serializable.

To detect this problem, you could turn on the logger for org.zkoss.io.serializable to the DEBUG level[1]. The logger is the standard logger. You could consult the configuration of the Web server you use. Or, you could run the following statement when your application starts[2].

org.zkoss.util.logging.Log.lookup("org.zkoss.io.serializable").setLevel("DEBUG");

  1. Available in 5.0.7
  2. It can be done by use of theWebAppInit listener. For more information, please refer to the Customization section.

Configuration Not Allowed

Here are a list of configuration that can not be used in the clustering environment. They are disabled by default. However, it is worth to double check if any of your members enables it accidentally.

Event Processing Thread

Do not enable the event processing thread. The event processing thread might be suspended, while the (suspended) thread cannot be migrated from one machine to another.

It is disabled by default. For more information, please refer to the Event Threads section.

Global Desktop Cache

Do not use GlobalDesktopCacheProvider (global desktop cache). The global desktop cache is stored in the servlet context, while only the data stored in sessions are migrated when failover takes place.

The desktop desktop cache is not used by default[1]. Just make sure you don't configure it wrong.


  1. Rather, the default is SessionDesktopCacheProvider.

Version History

Last Update : 2011/06/28


Version Date Content
5.0.7 April 2011 The log called org.zkoss.io.serializable was introduced.
5.0.8 June 2011 The listener called org.zkoss.zkplus.cluster.ClusterSessionPatch was introduced.



Last Update : 2011/06/28

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.