Tapestry-OSGi中引入了兩個動態服務的概念,先來看看這2個概念具體是什么。
1. ExtensionPoint與Extension
這個概念來自于Eclipse的插件技術,它在Web應用中如何體現?舉一個簡單的例子:
在為Tomcat-OSGi開發的osgi console中,使用的是Tapestry-OSGi,頁面中會有一個Menu的組件,它就是一個ExtensionPoint

其他組件只需要注冊一個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后開始發布。