Tapestry-OSGi中引入了两个动态服务的概念,先来看看这2个概念具体是什么。
1. ExtensionPoint与Extension
这个概念来自于Eclipse的插件技术,它在Web应用中如何体现?举一个简单的例子:
在为Tomcat-OSGi开发的osgi console中,使用的是Tapestry-OSGi,页面中会有一个Menu的组件,它就是一个ExtensionPoint
ExtensionPoint(point="org.extwind.osgi.console.MainMenu")
其他组件只需要注册一个Extension,即可在这个Menu中显示出来,这一切将是在运行时实现的!
2. Service
这个概念有点像OSGi中的Service Registry,Tapestry组件可以提供Service也可以获得Service,它在web应用汇总如何体现?举个例子
Tapestry-OSGi的示例控制台中,关于权限控制,有3个模型组:用户组,权限组,资源组
现在资源组假设只有一个页面:bundles控制页面,当client请求访问bundles控制页面时,这个页面将查找如果有LoginService存在并且没有登录,将跳转到LoginService提供的页面,当client提交登录表单后,LoginService又会查询是否有RoleService存在 ......
这些Service会有一个Manager页面去控制(disable/enable)
这个例子中如果再加入ExtensionPoint与Extension的概念,它将变得非常有意思。
Tapestry-OSGi的OSGi Console将在完成Service Managment后开始发布。
posted on 2009-05-24 19:03
Phrancol Yang 阅读(510)
评论(0) 编辑 收藏