Linux集群与jetspeed
2008-11-26 10:59:16 来源:WEB开发网3.4 Jetspeed的Session数据
支持集群必须使得各个服务实体针对某个任务的执行环境是相同的,对于jetspeed来说就是针对各个URL请求,session的数据能在各个 jetspeed上复制。这些session被同一个sessionid所标识,这些标识可能来自浏览器的cookies或URL中。我们首先用一个 velocityportlet来显示Jetspeed的session中到底保存了什么数据,这个portlet的注册名字为 SessionPortlet。
3.4.1 SessionPortlet
SessionPortlet是一个velocityPortlet,其类名可以是CustomizerVelocityPortlet或 VelocityPortlet,一般情况下没有必要开发一个新的portlet class。关于如何开发部署portlet的教程可见参考部分,现在我们分注册、控制助手、portlet模版和运行来讲述这个portlet。
3.4.1.1 注册
SessionPortlet用于显示目前的session数据。它在xreg中的注册代码为:
parent="CustomizerVelocity" application="false">
check infomation in session
org.apache.jetspeed.portal.portlets.CustomizerVelocityPortlet
cachedOnName="true" cachedOnValue="true"/>
hidden="true" cachedOnName="true" cachedOnValue="true"/>
legend
velocity.legend
3.4.1.2 控制助手Action
portlets.SessionAction是Velocityportlet模版portlet的控制助手,在velocity解释模版前执行:
public class SessionAction extends VelocityPortletAction {
protected void buildNormalContext( VelocityPortlet portlet,
Context context,
RunData rundata )
{
Map map = new HashMap();
Enumeration enumeration = rundata.getSession().getAttributeNames();
while (enumeration.hasMoreElements()) {
Object key = (Object) enumeration.nextElement();
Object value = (Object)rundata.getSession().getAttribute(key.toString());
map.put(key, value);
}
context.put("sessions",map);
}
}
更多精彩
赞助商链接