sakai 应用开发的hello world

本文先生成一个具体的系统,让大家有感性的认识,再对代码做一些简单的分析。
本文的前提是安装 sakai project app builder;同时你得安装maven,并能简单的使用。http://blog.csdn.net/totogogo/archive/2007/12/17/1942867.aspx这篇文章讲了maven 的编译生命期,讲得那是很不错。
采用Sakai Project App Builder,如下图:

[img]http://dl.iteye.com/upload/attachment/236090/5b644673-5d04-34bf-9746-8b0617d0bc9a.png[/img]

选择Project Type为Wicket,Implementations为Hello World app,Sakai version为K1(2.6.x+)
用cmd到项目的目录下,输入mvn package,在tool目录下有一个target目录,会找到一个sakaiapphelloworld-tool-0.1.war文件。
将这个文件拷到sakai部署的webapps目录下,重启sakai就可以了。
接下来,在浏览器中安装并测试工具。
点击”Sites”,选择一个站点,点击”Add/Edit pages”,到达Page编辑,点击”New Page”,增加一个Page,随便其个名字,点击下面的”Continue Editing Tools”,在工具列表中选择sakai-app-helloworld,如下图:

[img]http://dl.iteye.com/upload/attachment/236092/b799ad12-7426-35c1-9cab-994c2dd2d3d7.png[/img]

保存后,算是安装好了。
接下来到达对应的”Site”,就可以看到效果了:

[img]http://dl.iteye.com/upload/attachment/236094/513a4c07-9059-3ea7-9772-e8c5400705a5.png[/img]

下面说说代码结构。
带着这么一个疑问去看代码:示例产生了什么代码,使得在浏览器中的后台能看到并选中相应的工具。
这个helloworld的包类结构如下:

[img]http://dl.iteye.com/upload/attachment/236096/dd30b96b-7e94-368f-83c5-622fa8a1cf71.png[/img]

经过阅读,里面的四个.java 文件,都是和为实现Wicket渲染的代码,并没有主动注册的代码块。
那么,推断该工具是被动注册的,即sakai框架主动加载工具,那么在xml配置文件中就一定有相关信息。
于是,用dir列出该工厂下的所有文件,观察到一个“可疑文件”,”sakai.sakaiapphelloworld.xml”,打开,有下面的描述:

[img]http://dl.iteye.com/upload/attachment/236098/454063c0-bcbc-3d89-8288-a92fb2a2cacb.png[/img]

看字段命名推测,再看值肯定,这里就是注册的配置了。
有了推测,我们再找到内核,tool/impl/ToolComponent.java,里面有一个register函数,也发现确实是取这几个字段的。
为了让你看得明白,我们再来跟踪注册过程。
在 调试中才发现,原来注册是在ActiveToolComponent.java中。
有如下堆栈:

[img]http://dl.iteye.com/upload/attachment/236100/15a39abd-be6d-3831-b677-8a3c87c06417.png[/img]

其中ToolListener.contextIntialized实现如下:

[img]http://dl.iteye.com/upload/attachment/236102/316afd41-94d7-3667-8607-f322106fddbc.png[/img]

如上面注释中说的,这个函数找出webapp目录下/tools目录中的资源进行注册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值