版權所有:(xiaodaoxiaodao)藍小刀 ?? xiaodaoxiaodao@gmail.com

http://www.tkk7.com/xiaodaoxiaodao/archive/2007/09/23/147529.html

轉載請注明來源/作者

?

?

Alfresco 使用WSF開始WCM的創建

Alfresco WCM Website Framework (WSF)

什么是WSF,它其實算是一個基本的demo,在使用alfrescoWCM創建站點的時候,我們往往需要自己建WEB-INF目錄,建web.xml文件,建lib包,導入一些需要的js文件等等,WSF其實就集成了這些東西(集成在一個war包中),在alfresco中使用 " bulk import " (慢慢往下看,本文中有配圖說明)的功能可以導入這個war包,導入之后在alfresco中就可以正常運行這個WSF應用,這樣一個基本的站點就算搭好了,以后WCM的開發都可以在這個 基礎上繼續開發(就是在里面加一些jsp/shtm/html/jar/java之類的東西,就像開發web應用一樣)。

?

在使用WSF創建站點之前,請確保你已經安裝了 alfresco WCMWeb Content Management),具體下載和安裝方法可參考:《Alfresco2.1下載和安裝》《Alfresco WCM安裝和使用》。

?

關于WSF的安裝和使用在alfresco wiki(具體可參考:《翻譯:Alfresco WCM Website Framework (WSF))上也有相關說明,不過外文的東西說的始終不清不楚,下面是我在使用中的安裝過程和遇到的一些問題:

?

1 安裝 alfresco alfresco-community-tomcat-2.1.0.zip )和WCM alfresco-community-wcm-2.1.0.zip ),下面簡述安裝方法(詳細安裝方法和問題可參考上面提到的兩篇文章)。

下載和安裝alfresco

下載 alfresco-community-tomcat-2.1.0.zip ,下載后解壓到一個目錄,這里解壓到E:\project\alfresco,解壓后可以看到目錄結構如下:

alfresco.JPG啟動alfresco/alf_start.bat,訪問http://localhost:8080/alfresco/即可看到alfresco登錄界面(默認管理員登陸 用戶名:admin,密碼:admin)。

?

這時可以看到alfresco/tomcat/webapps目錄下的alfresco.war包被解壓為alfresco文件夾。

alfresco2.JPG?

下載和安裝WCM

下載 alfresco-community-wcm-2.1.0.zip ,把下載的WCM解壓到這里解壓到alfresco/tomcat/webapps/alfresco目錄下(如上圖所示),解壓后可以看到目錄結構如下:

alfresco_wcm.JPG?

wcm-bootstrap-context.xml剪切到alfresco/tomcat/shared/classes/alfresco/extension目錄下

?

啟動alfresco/alf_start.bat,訪問http://localhost:8080/alfresco/即可看到alfresco登錄界面(默認管理員登陸 用戶名:admin,密碼:admin,這時WCM已經被加載進alfresco之中了。

?

登陸后發現界面中會增加兩項:

"Company Home" 下增加"Web Projects"

"Company Home"" 數據字典"下增加"Web Forms"

?

當我們使用WCM創建一個新的站點時,通過創建"Web Projects"來生成一個web應用,使用"Web Forms"來定義一些web模板,使用這些web模板可以創建相應的頁面。

?

上面所述WCM的安裝過程也可參考 alfresco-community-wcm-2.1.0.zip 包中的README_wcm.txt文件。

?

?

2 WSF 的安裝和使用。

啟動alfrescoWCM 。

運行alfresco/alf_start.bat,啟動alfresco。

alfresco/tomcat/webapps/alfresco/virtual-tomcat/bin 下運行startup.bat(或者運行alfresco/tomcat/webapps/alfresco/virtual_start.bat,和運行startup.bat是一回事),啟動WCM,啟動后才能訪問發布的"Web Projects"

?

注: alfresco中發布的項目都位于alfresco/tomcat/webapps/alfresco/virtual-tomcat/work目錄下。(virtual-tomcat:虛擬tomcat,名字有點嚇人,其實也就是另外一個tomcat,端口是8180

?

導入WSF

在目錄alfresco/tomcat/webapps/alfresco/extras/wcm目錄下,可以看到有一個alfresco-wsf-website.war包,這個war包就是WSFdemo,下面是在alfresco中的導入(" bulk import " )過程。

?

創建"Web Projects"

訪問http://localhost:8080/alfresco/即可看到alfresco登錄界面(默認管理員登陸 用戶名:admin,密碼:admin)。

進入"Company Home"——"Web Projects",在"Create"按鈕上點擊,出現下拉菜單,如下圖:

alfresco_webproject_create1.JPG?

這里創建一個web工程(具體過程參考《Alfresco WCM安裝和使用》),假定叫做wsf-website

alfresco_webproject_create2.JPG?

導入(" bulk import " alfresco-wsf-website.war包。

點擊"wsf-website"圖片進入下一步:

alfresco_wsf_import1.JPG?

點擊"My Sandbox"圖片(為什么點擊,因為Staging Sandbox用來正式發布的,My Sandbox才是針對每個開發人員實際開發時的測試沙盒,在測試無誤之后才可以進入Staging Sandbox)進入下一步:

alfresco_wsf_import2.JPG?

點擊" bulk import " 導入alfresco-wsf-website.war包,可看到war包被解壓:

alfresco_wsf_import3.JPG?

注: " bulk import " war 包過大時可能會上傳不成功,出現下面錯誤:

org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update

Caused by:

org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update

?

這是因為使用了HSQL數據庫的原因(詳見http://forums.alfresco.com/viewtopic.php?t=7228),最好換成mysql數據庫,具體操作請參考《Alfresco2.1下載和安裝》。

?

下載SC.xmlNavigationTree.xml

點擊"Preview Website"按鈕預覽站點,發現依然出錯:

alfresco_wsf_error.JPG??????
???

這是因為缺少兩個文件:SC.xmlNavigationTree.xml。

SC.xml: 下載地址http://forge.alfresco.com/plugins/scmsvn/viewcvs.php/misc/contrib/grails-test/web-app/content/site-configuration/?root=wsf

?

NavigationTree.xml: 下載地址http://forge.alfresco.com/plugins/scmsvn/viewcvs.php/misc/contrib/grails-test/web-app/content/navigation/?root=wsf

同一地址下還有一個NavigationTree-menu.html,也可以選擇下載(或者不下載的話,點擊"Preview Website"按鈕預覽wsf demo出現的index頁面會提示缺少這個文件,不過index頁面依然可以顯示)下來放在 content/site-configuration

?

注: Alfresco forge 項目在開發的時候始終做不到及時更新(不少開源項目如struts/hibernate等都是這樣,經常出現的問題都是發布包更新了,但是里面的demo始終是舊版本的,所以會出現一些問題),往往CVS上已經有了一些新的代碼,卻沒有及時更新到發布的war包中,實在汗啊,所以有時候要自己從它的開發網站下載一些最新文件手動更新。

?

上傳SC.xmlNavigationTree.xml

上傳SC.xml(在界面中進入到 content/site-configuration 下點擊"Add Content"按鈕,然后添加SC.xml文件):

alfresco_wsf_import4.JPG?

上傳NavigationTree.xml(在界面中進入到 content/navigation 下點擊"Add Content"按鈕,然后添加NavigationTree.xml文件):

alfresco_wsf_import5.JPG?

修改 documents.jsp 文件

點擊"Preview Website"按鈕預覽站點,發現依然出錯:

alfresco_wsf_error.JPG?

下載 documents.jsp 文件( views/components 目錄下),你可以直接右鍵另存為,或者點"Edit"圖片按鈕:

alfresco_wsf_import6.JPG?

下載后找到上面出錯信息提示的一行:

http://localhost:8080/alfresco/service/search/keyword?q=${keyword}

修改為:

http://localhost:8080/alfresco/api/service/search/keyword?q=${keyword}

(可參考http://wiki.alfresco.com/wiki/OpenSearch#Alfresco_Keyword_Searchhttp://forums.alfresco.com/search.php?search_author=steuni&sid=7c0780b773d9a7763bee1f69d85736d3

?

修改后更新到 views/components 目錄下(點"Update"圖片按鈕):

alfresco_wsf_import7.JPG?

點擊"Preview Website"按鈕預覽"wsf-website"站點,發現站點預覽成功。

alfresco_wsf_import8.JPG預覽成功后實際上還是會有一些小問題,這還是因為alfresco forge上的文件我們還沒有拿全的原因,這里僅僅為了把demo運行起來看一下,大可以不往下繼續追究了,畢竟現在建立的wsf已經可以運行,我們就可以在此基礎上修改web.xmlindex指向,建自己的"Web Projects""Web Forms",然后一步步開發WCM了。

?

1 上面我們只是把它發布到了My Sandbox上,要正式發布還需要提交到Staging Sandbox上,如何提交請參考《Alfresco WCM安裝和使用》

?

2 大家可以把上面的alfresco-wsf-website.war包,和下面的兩個目錄對比一下alfresco\tomcat\webapps\alfresco\extras\wcm\contentmodelsXSD)和alfresco\tomcat\webapps\alfresco\extras\wcm\templatesXSL

可以看到alfresco-wsf-website.war/content

alfresco_wsf_import9.JPG?

alfresco\tomcat\webapps\alfresco\extras\wcm\contentmodels XSD)和alfresco\tomcat\webapps\alfresco\extras\wcm\templatesXSL:

alfresco_wsf_import10.JPG比較一下上面的目錄結構,在使用 WCM 創建 "Web Forms" 和在"Web Projects"通過"Add content"創建 頁面時,我們可以使用 alfresco\tomcat\webapps\alfresco\extras\wcm\contentmodels XSD)和alfresco\tomcat\webapps\alfresco\extras\wcm\templatesXSL 下的一些預定義 XSD+XSL

?

?

1 在使用WCM創建站點時,我們可能希望生成shtml文件,而alfresco-wsf-website.war/ WEB-INF web.xml文件默認已經支持SSI Servlet(且alfresco/tomcat/webapps/alfresco/virtual-tomcat/server/lib下的servlets-ssi.jar默認可以正常使用[tomcatservlets-ssi.jar包沒有開啟,名字為servlets-ssi.renametojar])。

?

啟動alfrescoalfresco/alf_start.bat)和WCMalfresco/tomcat/webapps/alfresco/virtual-tomcat/bin/startup.bat)時,可以看到使用的tomcatvirtual-tomcat版本都是5.5.23alfresco2.1)的。

?

最新版本的tomcat5.5.x版本只支持JDK1.5以上版本(http://apache.mirror.phpchina.com/tomcat/tomcat-5/v5.5.25/README.html,要支持JDK1.4,必須安裝兼容包。

tomcat6.0x只支持JDK1.5http://apache.mirror.phpchina.com/tomcat/tomcat-6/v6.0.14/README.html)以上版本。

?

2 Preview *.shtml的時候會出現不識別文件的情況(就是默認不會按shtml訪問,而是彈出一個提示下載的對話框),解決辦法是在web.xml文件中加入:

??? <mime-mapping>

??????? <extension>shtm</extension>

??????? <mime-type>text/x-server-parsed-html;charset=UTF-8</mime-type>

??? </mime-mapping>

??? <mime-mapping>

??????? <extension>shtml</extension>

??????? <mime-type>text/x-server-parsed-html;charset=UTF-8</mime-type>

??? </mime-mapping>

然后上傳到"wsf-website"工程相應目錄中,重新啟動virtual-tomcat即可。

因為alfresco代碼使用的是utf8格式,所以上面使用charset=UTF-8以保證生成shtml文件國際化。

?

SSI 的詳細說明文檔請參考apache網站:http://tomcat.apache.org/tomcat-5.5-doc/ssi-howto.html

?

?

Alfresco 使用 WSF 開始 WCM 的創建 .pdf 下載地址:

Alfresco 使用 WSF 開始 WCM 的創建 .rar


?

?

版權所有:(xiaodaoxiaodao)藍小刀 ?? xiaodaoxiaodao@gmail.com

?