近期由于項(xiàng)目的原因需要用到JetSpeed2(下稱JS2)。早聽(tīng)說(shuō)JS2有這樣那樣的優(yōu)點(diǎn),但用起來(lái)之后,發(fā)現(xiàn)最大的一個(gè)麻煩是缺少文檔。相比之下署名為中華博客網(wǎng)上的一系列的文章還很有內(nèi)容,然而是針對(duì)1X版本的。因此我自己不得不花一些時(shí)間研究JS2,將其中的內(nèi)容與大家分享,以免大家走彎路。

           

          目前JS2的分析還在進(jìn)行之中,會(huì)有一些內(nèi)容不正確或有遺漏,歡迎大家指正。

           

          第一章    JS2的頁(yè)面結(jié)構(gòu)

           

          一、頁(yè)面布局

           

          既然是深度剖析,什么安裝啊等過(guò)程就略過(guò)了,反正也很簡(jiǎn)單。我使用的JetSpeedJetSpeed2MutiDB版本,200512月發(fā)布的正式版。

           

          我們先來(lái)看看JS2的初始頁(yè)面。

           1.JPG
          上圖是訪問(wèn)
          JS2的初始頁(yè)面,我們可以看到這些東西:

          1JS2Logo

          2)兩個(gè)頁(yè)面,分別是“Welcome to JetSpeed2和“RSS Demo”;

          3)在第一個(gè)頁(yè)面中的瀏覽控制窗口;

          4)在第一個(gè)頁(yè)面中的9個(gè)Portlet

           

          那么,是哪些配置讓JS2顯示以上信息呢?從這個(gè)入手,我們就能夠慢慢揭開(kāi)JS2的神秘面紗了。

           

          二、頁(yè)面結(jié)構(gòu)分析

           

          本想在網(wǎng)上找一些文章能夠解釋JS2的頁(yè)面結(jié)構(gòu)和相應(yīng)的配置信息,找了一大圈,最后在JetSpeed2wiki上找到了頁(yè)面元素的定義:

          元素

          描述

          布局(Layout

          定義了多個(gè)頁(yè)面片段被聚集后的最終顯示模式。

          布局裝飾(Layout-decorator

          頁(yè)面周圍的布局。

          片段(Fragment

          動(dòng)態(tài)生成的內(nèi)容,通常就是一個(gè)Portlet或頁(yè)面生成的。一個(gè)頁(yè)面片段自己的內(nèi)容是不能夠被裝飾的。

          裝飾(Decoration

          一個(gè)對(duì)動(dòng)態(tài)內(nèi)容進(jìn)行修飾的靜態(tài)或半靜態(tài)標(biāo)記。

          頁(yè)面(Page

          多個(gè)片段的匯聚。

          頁(yè)面裝飾

          Page Decorator

          一種對(duì)頁(yè)面進(jìn)行修飾的標(biāo)記,由頁(yè)面的布局和多個(gè)片段組成。

          Porlet裝飾(Portlet Decorator

          一種只是針對(duì)Porlet進(jìn)行的裝飾。

           

          Wiki中用下圖描述了頁(yè)面的布局,但我認(rèn)為這一定是過(guò)時(shí)了的描述,因?yàn)樗锩娴牡囊恍┪募谙到y(tǒng)里壓根就沒(méi)有,比如Simpelayout.jsp

           2.JPG 

          只好自己分析了。

           

          目前,JetSpeed2的發(fā)布版里提供的是Velocity的配置模板,就是一系列的vm文件;按道理應(yīng)該有JSP的配置模板,但是在目前的系統(tǒng)里沒(méi)有看到。(狂遺憾中)

           

          無(wú)論如何,JS2是運(yùn)行在服務(wù)器上面的一個(gè)應(yīng)用,它一定會(huì)有自己的入口配置文件,在conf目錄下的jetspeed.properties就是我們要找的入口配置文件。

           

          jetspeed.properties文件定義了默認(rèn)的頁(yè)面裝飾風(fēng)格。這里的頁(yè)面,包含了名字、標(biāo)題、頁(yè)面片段,也可以指定他的裝飾風(fēng)格,如果沒(méi)有指定,則使用jetspeed.properties中的默認(rèn)風(fēng)格。

           

          因此,當(dāng)一個(gè)頁(yè)面需要被顯示時(shí),頁(yè)面裝配器會(huì)獲得當(dāng)前適用的裝飾風(fēng)格,這個(gè)裝飾可以使系統(tǒng)默認(rèn)的,也可以是頁(yè)面指定的。在同一個(gè)頁(yè)面上,可以有多個(gè)子頁(yè)面,每一個(gè)子頁(yè)面如果指定了不同的裝飾風(fēng)格,當(dāng)子頁(yè)面的獲得焦點(diǎn)時(shí),它的裝飾風(fēng)格會(huì)影響整個(gè)主頁(yè)面。

           

          l         default.user.principal=guest定義了默認(rèn)的用戶權(quán)限,也就是說(shuō),當(dāng)用戶沒(méi)有登陸時(shí),他將會(huì)擁有g(shù)uest的權(quán)限。

          l         layout.page.default = jetspeed-layouts::VelocityTwoColumns定義了一個(gè)頁(yè)面里頁(yè)面片段的布局格式,這里默認(rèn)的是兩列的方式。

          l         decorator.page.default = tigrisdecorator.portlet.default = tigris說(shuō)明默認(rèn)的裝飾風(fēng)格是tigris.因此,要研究頁(yè)面布局和風(fēng)格,請(qǐng)到tiris目錄下去找。

          其他的內(nèi)容不影響初始頁(yè)面的顯示,先不介紹了。

           

          目前對(duì)于頁(yè)面結(jié)構(gòu)我是這么理解的:整個(gè)Portal的頁(yè)面是一個(gè)主頁(yè)面,決定它風(fēng)格和顯示的內(nèi)容的是裝飾風(fēng)格(Decorator),它定義了(1)主頁(yè)面分幾個(gè)部分,(2)每一部分的內(nèi)容和風(fēng)格,(3)有幾個(gè)子頁(yè)面需要顯示;而每個(gè)子頁(yè)面決定了有多少個(gè)portlet需要顯示。畫成圖就是這樣的: 

           

           

           

          3.JPG
           

          (請(qǐng)大家指正)

           

          循著這個(gè)思路,我們來(lái)解釋首頁(yè)的結(jié)構(gòu):

           

          1JS2Logo

           

          頂上的標(biāo)志圖片,是在decorator下面layout目錄中tigris\header.vm文件中定義的,默認(rèn)的圖像文件是:jetspeed-logo.gif

           

          2)兩個(gè)頁(yè)面,分別是“Welcome to JetSpeed2和“RSS Demo”;

           

          JS2的默認(rèn)主頁(yè)面中,有兩個(gè)子頁(yè)面:(1)歡迎頁(yè)面 2RSS頁(yè)面。每一個(gè)頁(yè)面的定義是他們相應(yīng)的PSML文件。顯示這兩個(gè)頁(yè)面的原因是他們的security-constraintspublic-view,如果沒(méi)有定義,默認(rèn)值也是“public-view”。也就是說(shuō),顯示的頁(yè)面是基于規(guī)則的,而不是基于定義的。

           

          3)在第一個(gè)頁(yè)面中的瀏覽控制窗口;

           

          在各個(gè)pagefolder.metedata中定義。

           

          4)在第一個(gè)頁(yè)面中的9個(gè)Portlet

           

          這太簡(jiǎn)單了,打開(kāi)他的PSML文件:default-page.psml,一目了然。

           

           

           

          三、疑問(wèn)

           

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

           

          <未完待續(xù)>

           

          Feedback

          # re: (原創(chuàng)) JetSpeed2 深度剖析 (一)  回復(fù)  更多評(píng)論   

          2006-03-15 23:29 by nickey's home
          看不到圖~~~

          # re: (原創(chuàng)) JetSpeed2 深度剖析 (一)  回復(fù)  更多評(píng)論   

          2006-03-16 22:53 by someone
          前段時(shí)間也因?yàn)轫?xiàng)目的原因,調(diào)查了一番jetspeed2,發(fā)現(xiàn):
          1,jetspeed2的文檔特少,且主頁(yè)上有些文檔不對(duì)。
          2,數(shù)據(jù)庫(kù)的表定義沒(méi)有文檔。
          3,source巨復(fù)雜,難以讀懂。
          4,性能差,打開(kāi)OJB的debug選項(xiàng),輸出SQL可以看到,一次請(qǐng)求發(fā)行N條SQL。
          5,穩(wěn)定性差,有時(shí)莫名其妙的出Exception,但是不修改任何東西,重新啟動(dòng)一次就好了。
          6,有不少?zèng)]有什么使用的功能,比如Profile,檢索機(jī)能

          等等。。。。

          # re: (原創(chuàng)) JetSpeed2 深度剖析 (一)  回復(fù)  更多評(píng)論   

          2006-04-18 15:31 by Tony Winters
          期待(二)
          樓主加油

          # re: (原創(chuàng)) JetSpeed2 深度剖析 (一)  回復(fù)  更多評(píng)論   

          2006-10-04 16:16 by 微雨燕雙飛
          續(xù)呢?

          # re: (原創(chuàng)) JetSpeed2 深度剖析 (一)[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-10-20 10:50 by bobo
          能否對(duì)jetspeed2的登錄做一些分析,謝謝

          # re: (原創(chuàng)) JetSpeed2 深度剖析 (一)  回復(fù)  更多評(píng)論   

          2009-04-15 14:25 by jarorwar
          支持不錯(cuò),但是權(quán)限還是不明白

          # re: (原創(chuàng)) JetSpeed2 深度剖析 (一)  回復(fù)  更多評(píng)論   

          2009-04-22 13:24 by jarorwar
          我也想知道權(quán)限部分是怎么回事。。資料太少了啊

          # re: (原創(chuàng)) JetSpeed2 深度剖析 (一)[未登錄](méi)  回復(fù)  更多評(píng)論   

          2011-08-15 12:22 by
          你好,我是剛開(kāi)始學(xué)習(xí)jetspeed開(kāi)發(fā)的,在網(wǎng)上找了很多資料,感覺(jué)還沒(méi)入門,所以麻煩你加下我qq:617357435,有些問(wèn)題咨詢下,呵呵

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

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

          Copyright © 朔源

          主站蜘蛛池模板: 香格里拉县| 霍林郭勒市| 岑巩县| 商城县| 高邑县| 买车| 兴安县| 罗城| 调兵山市| 五寨县| 东乌珠穆沁旗| 上栗县| 陆河县| 驻马店市| 江北区| 东方市| 绿春县| 交城县| 泾源县| 镇雄县| 孟州市| 济阳县| 南通市| 静安区| 武平县| 深水埗区| 孟州市| 土默特左旗| 镇原县| 涟源市| 托克逊县| 宁乡县| 嫩江县| 来凤县| 平罗县| 淮安市| 即墨市| 南澳县| 陆川县| 徐闻县| 东源县|