版权所有:(xiaodaoxiaodao)蓝小刀
				
				
						   
						xiaodaoxiaodao@gmail.com
						
						
						
				
		
		
				
						
								
										http://www.blogjava.net/xiaodaoxiaodao/archive/2007/09/23/147529.html
								
						
				
		
		
				
						转载请注明来源/作者
				
		
		
				
						
								 
						
				
		
		
				
						
								 
						
				
		
		
				
						Alfresco
				
				
						使用WSF开始WCM的创建
				
				
						
								
								
						
				
		
		
				
						Alfresco WCM Website Framework (WSF)
				
		
		
				什么是WSF,它其实算是一个基本的demo,在使用alfresco的WCM创建站点的时候,我们往往需要自己建WEB-INF目录,建web.xml文件,建lib包,导入一些需要的js文件等等,WSF其实就集成了这些东西(集成在一个war包中),在alfresco中使用
				
						"
				
				
						bulk import
				
				
						"
				
				(慢慢往下看,本文中有配图说明)的功能可以导入这个war包,导入之后在alfresco中就可以正常运行这个WSF应用,这样一个基本的站点就算搭好了,以后WCM的开发都可以在这个 基础上继续开发(就是在里面加一些jsp/shtm/html/jar/java之类的东西,就像开发web应用一样)。
		
		
				
						 
				
		
		
				在使用WSF创建站点之前,请确保你已经安装了
				alfresco
				和WCM(Web 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/alf_start.bat,访问http://localhost:8080/alfresco/即可看到alfresco登录界面(默认管理员登陆 用户名:admin,密码:admin)。
启动alfresco/alf_start.bat,访问http://localhost:8080/alfresco/即可看到alfresco登录界面(默认管理员登陆 用户名:admin,密码:admin)。
		
		
				
						 
				
		
		
				这时可以看到alfresco/tomcat/webapps目录下的alfresco.war包被解压为alfresco文件夹。
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				
						② 
				
				下载和安装WCM
		
		
				下载
				
						
								alfresco-community-wcm-2.1.0.zip
						
				
				,把下载的WCM解压到这里解压到alfresco/tomcat/webapps/alfresco目录下(如上图所示),解压后可以看到目录结构如下:
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				把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
				的安装和使用。
		
		
				
						① 
				
				
						启动alfresco和WCM
				
				。
		
		
				
						⑴ 
				
				运行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包就是WSF的demo,下面是在alfresco中的导入("
				
						bulk import
				
				
						"
				
				)过程。
		
		
				
						 
				
		
		
				
						⑴ 
				
				创建"Web Projects"
		
		
				访问http://localhost:8080/alfresco/即可看到alfresco登录界面(默认管理员登陆 用户名:admin,密码:admin)。
		
		
				进入"Company Home"——"Web Projects",在"Create"按钮上点击,出现下拉菜单,如下图:
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				这里创建一个web工程(具体过程参考《Alfresco WCM安装和使用》),假定叫做wsf-website:
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				
						⑵ 
				
				导入("
				
						bulk import
				
				
						"
				
				)alfresco-wsf-website.war包。
		
		
				点击"wsf-website"图片进入下一步:
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				点击"My Sandbox"图片(为什么点击,因为Staging Sandbox用来正式发布的,My Sandbox才是针对每个开发人员实际开发时的测试沙盒,在测试无误之后才可以进入Staging Sandbox)进入下一步:
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				点击"
				
						bulk import
				
				
						"
				
				导入alfresco-wsf-website.war包,可看到war包被解压:
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				
						注:
				
				在"
				
						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.xml和NavigationTree.xml。
		
		
				
						点击"Preview Website"按钮预览站点,发现依然出错:
						
						
				
				
						
								 
      
						
    
				
				
		
		这是因为缺少两个文件:SC.xml和NavigationTree.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.xml和NavigationTree.xml。
		
		
				上传SC.xml(在界面中进入到
				content/site-configuration
				下点击"Add Content"按钮,然后添加SC.xml文件):
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				上传NavigationTree.xml(在界面中进入到
				content/navigation
				下点击"Add Content"按钮,然后添加NavigationTree.xml文件):
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				
						⑸
				
				修改
				
						documents.jsp
				
				文件
		
		
				点击"Preview Website"按钮预览站点,发现依然出错:
		
		
				
						
								 
 
				
		
		
				下载
				
						documents.jsp
				
				文件(
				views/components
				目录下),你可以直接右键另存为,或者点"Edit"图片按钮:
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				下载后找到上面出错信息提示的一行:
		
		
				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_Search和http://forums.alfresco.com/search.php?search_author=steuni&sid=7c0780b773d9a7763bee1f69d85736d3)
		
		
				
						 
				
		
		
				修改后更新到
				views/components
				目录下(点"Update"图片按钮):
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				
						⑹ 
				
				点击"Preview Website"按钮预览"wsf-website"站点,发现站点预览成功。
		
		
				
						
						
				
		
		
				
						 预览成功后实际上还是会有一些小问题,这还是因为alfresco forge上的文件我们还没有拿全的原因,这里仅仅为了把demo运行起来看一下,大可以不往下继续追究了,毕竟现在建立的wsf已经可以运行,我们就可以在此基础上修改web.xml的index指向,建自己的"Web Projects"和"Web Forms",然后一步步开发WCM了。
预览成功后实际上还是会有一些小问题,这还是因为alfresco forge上的文件我们还没有拿全的原因,这里仅仅为了把demo运行起来看一下,大可以不往下继续追究了,毕竟现在建立的wsf已经可以运行,我们就可以在此基础上修改web.xml的index指向,建自己的"Web Projects"和"Web Forms",然后一步步开发WCM了。
		
		
				
						 
				
		
		
				
						注1:
				
				上面我们只是把它发布到了My Sandbox上,要正式发布还需要提交到Staging Sandbox上,如何提交请参考《Alfresco WCM安装和使用》。
		
		
				
						 
				
		
		
				
						注2:
				
				大家可以把上面的alfresco-wsf-website.war包,和下面的两个目录对比一下alfresco\tomcat\webapps\alfresco\extras\wcm\contentmodels(XSD)和alfresco\tomcat\webapps\alfresco\extras\wcm\templates(XSL)
		
		
				可以看到alfresco-wsf-website.war/content:
		
		
				
						
						
				
		
		
				
						
								 
 
				
		
		
				alfresco\tomcat\webapps\alfresco\extras\wcm\contentmodels
				(XSD)和alfresco\tomcat\webapps\alfresco\extras\wcm\templates(XSL):
		
		
				
						
						
				
		
		
				
						 比较一下上面的目录结构,在使用
				WCM
				创建
				"Web Forms"
				和在"Web Projects"通过"Add content"创建
				页面时,我们可以使用
				alfresco\tomcat\webapps\alfresco\extras\wcm\contentmodels
				(XSD)和alfresco\tomcat\webapps\alfresco\extras\wcm\templates(XSL)
				下的一些预定义
				XSD+XSL
				。
比较一下上面的目录结构,在使用
				WCM
				创建
				"Web Forms"
				和在"Web Projects"通过"Add content"创建
				页面时,我们可以使用
				alfresco\tomcat\webapps\alfresco\extras\wcm\contentmodels
				(XSD)和alfresco\tomcat\webapps\alfresco\extras\wcm\templates(XSL)
				下的一些预定义
				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默认可以正常使用[原tomcat的servlets-ssi.jar包没有开启,名字为servlets-ssi.renametojar])。
		
		
				
						 
				
		
		
				启动alfresco(alfresco/alf_start.bat)和WCM(alfresco/tomcat/webapps/alfresco/virtual-tomcat/bin/startup.bat)时,可以看到使用的tomcat和virtual-tomcat版本都是5.5.23(alfresco2.1)的。
		
		
				
						 
				
		
		
				最新版本的tomcat5.5.x版本只支持JDK1.5以上版本(http://apache.mirror.phpchina.com/tomcat/tomcat-5/v5.5.25/README.html),要支持JDK1.4,必须安装兼容包。
		
		
				而tomcat6.0x只支持JDK1.5(http://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