2006年3月15日

近期由于项目的原因需要用到JetSpeed2(下称JS2)。早听说JS2有这样那样的优点,但用起来之后,发现最大的一个麻烦是缺少文档。相比之下署名为中华博客网上的一系列的文章还很有内容,然而是针对1X版本的。因此我自己不得不花一些时间研究JS2,将其中的内容与大家分享,以免大家走弯路。

 

目前JS2的分析还在进行之中,会有一些内容不正确或有遗漏,欢迎大家指正。

 

第一章    JS2的页面结构

 

一、页面布局

 

既然是深度剖析,什么安装啊等过程就略过了,反正也很简单。我使用的JetSpeedJetSpeed2MutiDB版本,200512月发布的正式版。

 

我们先来看看JS2的初始页面。

 1.JPG
上图是访问
JS2的初始页面,我们可以看到这些东西:

1JS2Logo

2)两个页面,分别是“Welcome to JetSpeed2和“RSS Demo”;

3)在第一个页面中的浏览控制窗口;

4)在第一个页面中的9Portlet

 

那么,是哪些配置让JS2显示以上信息呢?从这个入手,我们就能够慢慢揭开JS2的神秘面纱了。

 

二、页面结构分析

 

本想在网上找一些文章能够解释JS2的页面结构和相应的配置信息,找了一大圈,最后在JetSpeed2wiki上找到了页面元素的定义:

元素

描述

布局(Layout

定义了多个页面片段被聚集后的最终显示模式。

布局装饰(Layout-decorator

页面周围的布局。

片段(Fragment

动态生成的内容,通常就是一个Portlet或页面生成的。一个页面片段自己的内容是不能够被装饰的。

装饰(Decoration

一个对动态内容进行修饰的静态或半静态标记。

页面(Page

多个片段的汇聚。

页面装饰

Page Decorator

一种对页面进行修饰的标记,由页面的布局和多个片段组成。

Porlet装饰(Portlet Decorator

一种只是针对Porlet进行的装饰。

 

Wiki中用下图描述了页面的布局,但我认为这一定是过时了的描述,因为它里面的的一些文件在系统里压根就没有,比如Simpelayout.jsp

 2.JPG 

只好自己分析了。

 

目前,JetSpeed2的发布版里提供的是Velocity的配置模板,就是一系列的vm文件;按道理应该有JSP的配置模板,但是在目前的系统里没有看到。(狂遗憾中)

 

无论如何,JS2是运行在服务器上面的一个应用,它一定会有自己的入口配置文件,在conf目录下的jetspeed.properties就是我们要找的入口配置文件。

 

jetspeed.properties文件定义了默认的页面装饰风格。这里的页面,包含了名字、标题、页面片段,也可以指定他的装饰风格,如果没有指定,则使用jetspeed.properties中的默认风格。

 

因此,当一个页面需要被显示时,页面装配器会获得当前适用的装饰风格,这个装饰可以使系统默认的,也可以是页面指定的。在同一个页面上,可以有多个子页面,每一个子页面如果指定了不同的装饰风格,当子页面的获得焦点时,它的装饰风格会影响整个主页面。

 

l         default.user.principal=guest定义了默认的用户权限,也就是说,当用户没有登陆时,他将会拥有guest的权限。

l         layout.page.default = jetspeed-layouts::VelocityTwoColumns定义了一个页面里页面片段的布局格式,这里默认的是两列的方式。

l         decorator.page.default = tigrisdecorator.portlet.default = tigris说明默认的装饰风格是tigris.因此,要研究页面布局和风格,请到tiris目录下去找。

其他的内容不影响初始页面的显示,先不介绍了。

 

目前对于页面结构我是这么理解的:整个Portal的页面是一个主页面,决定它风格和显示的内容的是装饰风格(Decorator),它定义了(1)主页面分几个部分,(2)每一部分的内容和风格,(3)有几个子页面需要显示;而每个子页面决定了有多少个portlet需要显示。画成图就是这样的: 

 

 

 

3.JPG
 

(请大家指正)

 

循着这个思路,我们来解释首页的结构:

 

1JS2Logo

 

顶上的标志图片,是在decorator下面layout目录中tigris\header.vm文件中定义的,默认的图像文件是:jetspeed-logo.gif

 

2)两个页面,分别是“Welcome to JetSpeed2和“RSS Demo”;

 

JS2的默认主页面中,有两个子页面:(1)欢迎页面 2RSS页面。每一个页面的定义是他们相应的PSML文件。显示这两个页面的原因是他们的security-constraintspublic-view,如果没有定义,默认值也是“public-view”。也就是说,显示的页面是基于规则的,而不是基于定义的。

 

3)在第一个页面中的浏览控制窗口;

 

在各个pagefolder.metedata中定义。

 

4)在第一个页面中的9Portlet

 

这太简单了,打开他的PSML文件:default-page.psml,一目了然。

 

 

 

三、疑问

 

找到了部分的配置信息,但是这些配置信息是如何被使用的?

 

<未完待续>

 

posted @ 2006-03-15 21:53 朔源 阅读(2747) | 评论 (8)编辑 收藏


2006年2月17日

自己取名WhitePaper,有两个意思,一方面希望像真的白皮书一样贡献详尽的技术介绍,另一方面,也能够像白纸一样倾听您的声音。

posted @ 2006-02-17 15:36 朔源 阅读(210) | 评论 (0)编辑 收藏


仅列出标题  

posts - 2, comments - 8, trackbacks - 0, articles - 0

Copyright © 朔源