`
continentlu
  • 浏览: 11499 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sakai2.7.0/1开发相关问题及解决方法

阅读更多

本文档是个人亲身的开发总结,望能帮助有需要的朋友。

sakai2.7.0开发相关

	一:安装



	具体安装步骤请参考JAVAEYE网站中的网页 《710642_sakai2.7源代码及bigbulebutton安装手册》,
	
	该文章详细说明了SAKAI2.7.0的安装、编绎、发布、运行等。需要注意的是各操作中的版本及参数设置,

如 JDK为1.5,TOMCAT为5.5,Maven为2.0等信息。
	
	注意:使用MAVEN构建SAKAI2.7.0时,MAVEN的JDK版本需为1.5,经测试1.6或更高无法构建。

	二:开发
	前提,在第一步中的所有操作都已成功完成.

	1:使用myeclipse的安装插件功能,从地址 http://source.sakaiproject.org/appbuilder/update/
 ,该插件目前最新版本为0.8.8,但生成的却是2.6.0的配置。
	
		下载并安装sakai app builder,该插件的功能主要是可以自动生成sakai项目的框架与简单示例,

详细使用信息请搜索.

	2(可选):安装m2eclipse插件,该插件为eclipse的maven插件,用于导入maven项目,执行maven命令等功能.

在菜单栏中选择Help,
	
		然后选择Install New Software…,接着你会看到一个Install对话框,

点击Work with:字段边上的Add按钮,你会得到一个新的Add Repository对话框,
	
		在Name字段中输入m2e,Location字段中输入http://m2eclipse.sonatype.org/sites/m2e,

然后点击OK。Eclipse会下载m2eclipse安装站点上的资源信息。
	
		等待资源载入完成之后,我们再将其全部展.

	3(在第二步的基础上,可选):关闭IDE(myeclipse)自带的Maven插件功能,点击菜单栏中的Windows,

然后选择Preferences,在弹出的对话框中,展开左边的Maven项,

		选择Installation子项,在右边的面板中,我们能够看到有一个默认的Embedded Maven安装被选中了,

点击Add…然后选择我们的Maven安装目录M2_HOME,

		添加完毕之后选择这一个外部的Maven.

	4:创建一个简单的JSP sakai项目.








		
		42.1:新建一个sakai app project,Project Type为:JSP,Implementations为:Hello World app,

Sakai version为:K1(2.6.x+),Maven version为:Maven 2.0

		4.2:更改项目根目录下的pom.xml文件,找到 artifactId 为 master的位置,把它的 version 

更改为当前使用的版本号(目前我们使用的是2.7.0)

		4.3:定位到项目的 tool 目录下的pom.xml文件,把

		     <dependency>
		         <groupId>org.sakaiproject</groupId>
		         <artifactId>sakai-jsp-adapter</artifactId>
		         <version>0.8-M2</version>
		         <scope>runtime</scope>
		      </dependency>
		
 
			更改为如下:
		
		     <dependency>
		         <groupId>org.sakaiproject</groupId>
		         <artifactId>sakai-jsp-adapter</artifactId>
		         <version>0.8-M2</version>
		         <scope>runtime</scope>
		             <exclusions>
		                 <exclusion>
		                     <groupId>org.sakaiproject</groupId>
		                     <artifactId>sakai-tool-api</artifactId>
		                 </exclusion>
		             </exclusions>         
		      </dependency>
		
			把   <!-- Sakai util dependency -->
		      <dependency>
		         <groupId>org.sakaiproject</groupId>
		         <artifactId>sakai-util</artifactId>
		         <version>${sakai.version}</version>
		         <scope>runtime</scope>
		      </dependency>这部分给注释掉。
		4.4:右键项目根目录,选择Run As-->Maven Install命令构建项目,成功执行后,刷新项目,

			从项目的tool-->target目录考贝生成的 项目名-tool-版本号.war 文件到tomcat的WeppApp中,

启动Tomcat.

		4.5:进入sakai,打开一个功能(具有"站点设置"菜单),点击 站点设置 ,在下面出现的列表中的功能,

			选择刚发布的功能(名称与 项目-->src-->tool-->webApp-->tools-->sakai.项目名称.xml

文件中的 title 值一样),

			选中它,保存所有后,在左边的菜单中即会出现项目.

                4.6:修改web.xml文件中的
				<!--
				<init-param>
					<param-name>main-page</param-name>
					<param-value>/</param-value>
				</init-param>
				-->
			解注释并改为:
			<init-param>
				<param-name>main-page</param-name>
				<param-value>/你想要的默认显示的页面地址</param-value>
			</init-param>
			,不做该步,在第进入该tool时,显示为错误页面。
		4.7:自动发布到tomcat中。
			 
			在myeclipse中,右键项目 选择Run As-->Maven build...,在弹出的对话框中,

找到Goals对应的输入框,输入命令:

			clean install sakai:deploy -Dmaven.tomcat.home=你的tomcat的根目录

 -Dmaven.test.skip=如果需测试则为:true,反之为:false.

			然后点击 Apply,再点击Run运行。通过以上操作,

当前的sakai应用(简单的sakai应用或完整的CRUD应用),sakai会自动按约定打好包,并自动布署到

			tomcat中、加载、运行。


	5:创建一个 CURD 的sakai项目.








		
		5.1:新建一个sakai app project,输入一个项目名称,Project Type为:JSP,

Implementations为:Full CRUD app,Options:可以不勾选EntityBroker,

			Sakai version为:K1(2.6.x+),Maven version为:Maven 2.0.

		5.2:按照 “创建一个简单的JSP sakai项目” 的 2.2 一直到 2.3步。

		5.3:进入 pack/src/webapp/WEB-INF 目录,修改 components.xml 文件中的bean配置:

    		<!-- create a logic bean, give it the dao from above -->
    		<bean id="org.sakaiproject.demo.logic.DemoLogic"
        		class="org.sakaiproject.demo.logic.DemoLogicImpl"
        		init-method="init">
        		<property name="dao" 
           		 ref="org.sakaiproject.demo.dao.DemoDao" />
        		<property name="externalLogic"
           		 ref="org.sakaiproject.demo.logic.ExternalLogic" />
    		</bean>

			为:

			<!-- create a logic bean, give it the dao from above -->
    		<bean id="org.sakaiproject.demo.logic.DemoLogic"
        		class="org.sakaiproject.demo.logic.DemoLogicImpl"
        		init-method="init">
        		<property name="dao" 
            		ref="org.sakaiproject.demo.dao.DemoDaoTarget" />
        		<property name="externalLogic"
            		ref="org.sakaiproject.demo.logic.ExternalLogic" />
    		</bean>

			主要是因为它生成的dao属性的引用bean,不是我们dao属性接口的实现类。

该问题在在运行时侯才发现的,因我们的配置文件中有对该dao接口的实现
		
			(org.sakaiproject.demo.dao.DemoDaoTarget),所以换成它即可。

5.4:找到位于impl\src\java目录中的PreloadDataImpl.java(如果有的话),修改方法preloadItems为如下:

(看不到图片的请注释该方法里的代码即可) 
要
否则会报空指针异常,原因是没有数据引起的。
		5.5:参考2.6步骤,布置应用到tomcat中。如果tomcat目前是启动的,那先停止再启动,

因为sakai目前(当前的测试结纶)还无法热加载sakai的component组件,

			因为在我们开发的 CRUD app中,是一部分是sakai的component组件,

它主要是用到加载到sakai的全局的bean容器中,以供其它的 app 调用。基于它无法自动热

			加载component部分,所以才需要在用2.6中的命令布署后,重新启动一次tomcat。

		5.6:把新开发的 CRUD 应用挂载到sakai中。

			操作步骤请参考 2.5 步的操作说明。

		注意:如果当前的CRUD应用没有包括当前使用数据的驱动,

请复制所操作的数据库驱动的jar包到tomcat的common的lib目录中。


sakai发布到本地/远程tomcat服务器:



	在sakai工程的根目录使用maven命令:mvn clean install sakai:deploye -Dmaven.tomcat.home=

本地的tomcat根路径,如:d:\program files\tomcat 或者 网络路径
	
	\\远程主机IP\tomcat根目录(前提你是有该机的能够创建文件权限的登录用户与密码)。
        

在 share中的TOOl API jar包中不能包含如:generic-dao(无法引用到的类,tomcat类访问层次限制)。

在开发sakai的tool中,其项目的主pom.xml文件中对API的依赖配制的scope 需为 provided,因为在impl与tool中的pom.xml中有对该主pom.xml文件继承,在这些文件中也对api做了 依赖配制,如果在构建时,没有声明在主pom.xml文件中声明api的scope为provided则会把api的jar包生成到impl与tool中,在运行时,出就出现api的类被两个不同的类加载器所加载 ,在获得sping对该类的bean时,就会出现ClassCaseException.

如果是jsp与servlet的tool,在jsp或servlet中需调用spring的 WebApplicationContextUtils来获得bean时,那么在tool中的pom.xml文件中需要对spring的jar包进行依 赖,该依赖的scope得为provided,否则在运行时就会出现 Context attribute is not of type WebApplicationContext: org.springframework.web.context.support.XmlWebApplicationContext@26f5a7: display name [Root WebApplicationContext]; startup date [Fri Jun 17 08:32:31 GMT 2011]; parent: org.sakaiproject.util.SakaiApplicationContext@1954f89 异常

 

site开发

请求主要处理类为:org.sakaiproject.site.tool.SiteAction,它里面定义了一系列的方法,其重要的数据库操作类为:org.sakaiproject.site.impl.DbSiteService,

当然还有很多(目前没深究,所以觉的多)其它处理类与方法。

决定使用哪一个SITE的模板文件的方法为:org.sakaiproject.site.tool.SiteAction.buildContextForTemplate,

该方法也有把服务器数据设置到velocity的VM文件在前台可以访问的数据。

把前台FORM接收的数据填充到服务器的SITE相关属性的方法为:org.sakaiproject.site.tool.SiteAction.updateSiteInfo,

它获得前台FORM中的数据填充到类名为SiteInfo的类中,然后再把该类保存SessionState的一个实现类 org.sakaiproject.event.impl.UsageSessionServiceAdaptor$SessionStateWrapper 的缓存中,

用于分步提交时再获取进行进一步的设置,

最后时再取出,设siteInfo中的数据设置到Site的实现类中,调用相关方法进行保存。

org.sakaiproject.site.impl.DbSiteService.readSqlResultRecord方法负责从 SQL查询的结果集中提取数据组装成一个Site的实现类BaseSite,是调用BaseSite的构造方法进行实现的。然后再返回...

注意,如果当前sakai有用到entitybroker组件,那么为Site接口添加方法后,类D:\soft\java\sakai\sakai_AllSource\entitybroker\tags\entitybroker-1.3.13\core-

providers\src\java\org\sakaiproject\entitybroker\providers\model\EntitySite.java
作为Site的实现类也需要实现所添加的方法。

登录页面数据设置位置

类package org.sakaiproject.portal.charon.handlers.SiteHandler 方法includeSiteNav第1364行,第includeSiteNav行重载方法includeSiteNav可获得是否登录的属性。类

org.sakaiproject.portal.charon.SkinnableCharonPortal方法includeLogin第1461行设置登录页面数据。

 

待续...

 

分享到:
评论

相关推荐

    Sakai部署步骤 (1)1

    在本文中,我们将详细探讨如何部署Sakai教育平台,主要关注环境准备、MySQL数据库的安装与配置,以及Sakai的部署流程。...如果遇到问题,查阅Sakai的官方文档或社区资源,它们通常能提供详细的故障排除指南。

    Sakai的开发文档

    - **问题解决**:在编译过程中可能会遇到因非英语环境导致的错误,解决方法包括更改系统语言设置为英语或者在编译时添加参数`-Dmaven.test.skip=true`以跳过测试。 - **数据库配置**:对于使用MySQL作为数据库的...

    Sakai部署步骤1

    请注意,实际部署过程中可能会遇到各种问题,如网络连接、权限问题、依赖库不匹配等,这些问题都需要根据实际情况进行调试和解决。为了确保Sakai稳定运行,定期更新和维护是非常重要的,包括升级Sakai版本、更新安全...

    Sakai-src基于Sakai的源码文件

    1. **项目结构**:Sakai的源代码按照模块进行组织,如"kernel"、"portal"、"content"等,这对应了Sakai的不同服务。"kernel"是核心服务层,提供基础的数据管理和安全控制;"portal"处理用户界面和路由;"content"则...

    sakai charon分析文档

    对于那些需要定制化教学平台的企业、高校及个人开发者来说,Sakai不仅提供了强大的功能,还拥有一个活跃的社区,可以提供技术支持和交流。 #### 二、Charon模块介绍 Charon作为Sakai 2.x版本中的一个重要组成部分...

    sakai 用户注册业务流程分析

    这使得 Sakai 成为了企业和个人进行二次开发的理想选择。本文将详细介绍 Sakai 中用户注册业务流程的实现机制,旨在帮助开发者更好地理解其内部运作逻辑。 #### 二、Sakai 用户注册业务流程概述 用户注册功能在 ...

    sakai样式修改手册

    在进行Sakai的样式修改时,确保你的改动不会破坏其他功能,并且遵循Sakai的开发和贡献指南,以保持与社区的兼容性。同时,进行充分的测试以验证修改的效果,并考虑不同浏览器和设备的兼容性问题。通过这些步骤,你...

    sakai的安装配置

    本文档旨在详细介绍 Sakai 2.9.0 版本的安装与配置过程,并解决在安装过程中可能遇到的一些常见问题。 #### 二、环境准备 在进行 Sakai 的安装配置前,需要准备以下软件: 1. **Apache Maven 3.0.4**:用于构建和...

    Sakai 2.6 配置

    Sakai 2.6是该平台的一个较早版本,虽然现在已经有了更先进的版本,但了解它的配置对于历史项目维护或学习开源教育平台的开发仍有价值。 本文将深入探讨Sakai 2.6的配置过程,重点关注核心配置文件`sakai....

    Sakai 框架与内核 附件下载

    Sakai框架与内核是其核心组成部分,它们共同构成了一个强大的系统架构,支持各种教学和学习应用的开发与集成。 一、Sakai框架 Sakai框架是一个服务导向架构(SOA),它的设计目标是提供可扩展性和灵活性,以适应...

    使用Sakai构建开放式教学平台(完整版)

    此外,定期的监控与维护也是不可或缺的环节,有助于及时发现并解决问题。 #### 使用经验与总结 Sakai的成功实施依赖于对平台特性的深入理解和合理利用。持续的社区参与、积极的反馈循环以及适时的技术更新是保持...

    sakai doc 2.9.3

    1. **类和接口**:列出所有核心的 Sakai 类和接口,包括它们的继承关系、实现的接口、构造函数、成员变量以及方法。 2. **方法签名和描述**:每个方法的输入参数、返回值和可能抛出的异常,以及它们的功能描述,...

    sakai-介绍

    【标题】"Sakai-介绍" Sakai是一个开源的教育技术平台,主要用于构建在线学习社区和管理系统。它提供了一系列工具,支持教学、协作、评估和资源共享等教育活动,帮助教师、学生和管理员实现教育目标。Sakai的设计...

    sakai webservices 使用方式

    Sakai支持二次开发,这意味着用户可以根据自己的需求定制功能和服务,从而更好地满足特定场景的需求。 #### 二、Sakai Webservices 实现原理 Sakai的Webservices实现在技术层面上是基于Apache Axis 1构建的。...

    sakai 的权限流程分析-详细的源码调用过程

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流,欢迎交流!

    SAKAI 架构 的前世今生

    SAKAI项目起源于2003年,由几所知名大学(包括密歇根大学、斯坦福大学和卡内基梅隆大学)联合发起,旨在打破传统学习管理系统(LMS)的封闭性,创建一个开放源代码的解决方案。"SAKAI"这个名字来源于日语,意为...

    SourceCode版本Sakai安装配置

    **源码版本Sakai安装配置详解** ...请确保每个步骤都正确执行,遇到问题时查阅Sakai社区文档或在线资源以寻求解决方案。完成这些步骤后,你将拥有一个本地运行的Sakai实例,可以开始创建和管理在线学习环境了。

    E-learning sakai 用户手册

    Sakai 是由高校、商业组织和个人开发者组成的社区,致力于开发一个通用的协作学习环境(Collaboration and Learning Environment,CLE)。Sakai是基于Educational Community License(开源软件许可证的一种)的教育软件...

    sakai-portal-api-2.9.0-b05.zip

    标题 "sakai-portal-api-2.9.0-b05.zip" 暗示了这是一个关于Sakai门户API的版本包,版本号为2.9.0的b05迭代。Sakai是一个开源的教育软件平台,主要用于构建网络学习环境,它提供了丰富的工具和服务,如课程管理、...

Global site tag (gtag.js) - Google Analytics