Extwind——支持OSGi應(yīng)用的Tomcat
最新進(jìn)度:
實(shí)現(xiàn)Tomcat與Equinox的擴(kuò)展集成,全面兼容原始Tomcat和Equinox。界面控制臺(tái)基本完成,目前可以使用它控制OSGi-App中的bundle,功能(Install, Start, Stop, Uninstall )
在System Bundle(Equinox)中export: javax.servlet,org.extwind.osgi.service
實(shí)現(xiàn)HttpService注冊(cè)Servlet和Resource
實(shí)現(xiàn)HttpService注冊(cè)jsp 實(shí)現(xiàn)相同HttpContext注冊(cè)地Servlet和Resource共享ServletContext
OSGiContext自動(dòng)安裝OSGi-App根目錄中的jar包
Tomcat-OSGi QuickStart:
1. 準(zhǔn)備工作
使用Extwind的Tomcat-OSGi是非常簡單的,首先下載不到2M的rar文件,其中包括以下內(nèi)容:
extwind-tomcat-osgi-0.1-alpha.jar - Tomcat于Equinox集成jar包,它是必須的。
org.eclipse.osgi-0.1-Alpha.jar - 擴(kuò)充過的Equinox osgi-framework,它不是必須的,如果不使用它,將需要額外的bundle去支持javax.servlet,javax.servlet.http,org.extwind.osgi.service.http,建議使用它,因?yàn)樵谝院蟮陌姹局校锌赡軙?huì)成為必須得。
osgiManager - Web Application,支持OSGi Application管理的控制臺(tái),通過它可以對(duì)每一個(gè)OSGi-App中的bundle進(jìn)行管理
osgiapp - 一個(gè)非常簡單的Web Application,里面包含一個(gè)簡單的bundle,分別注冊(cè)了一個(gè)static resource,一個(gè)jsp文件,一個(gè)Servlet
server.xml - Tomcat 6.x的示例配置文件,可選的
tomcat-users.xml - Tomcat 6.x 控制臺(tái)用戶權(quán)限配置文件,可選的
[ 點(diǎn)擊這里下載 Tomcat-OSGi-QuickStart ]
2. 配置Tomcat 6.x
將Tomcat 6.x 解壓到某目錄,例如 D:\Tomcat6
將extwind-tomcat-osgi-0.1-alpha.jar 和 org.eclipse.osgi-0.1-Alpha.jar 拷貝到 D:\Tomcat6\lib 目錄下
將osgiapp和osgiManager拷貝到 D:\Tomcat6\webapps 目錄下
打開server.xml,在<Host>節(jié)點(diǎn)中加入2個(gè)屬性 className和hostConfigClass,就像下面一樣:(或者直接使用本例提供的server.xml)




將tomcat-users.xml拷貝到D:\Tomcat6\conf 目錄下,覆蓋原配置文件
3. 開始使用
經(jīng)過以上簡單的準(zhǔn)備和配置工作,現(xiàn)在已經(jīng)可以開始使用了,啟動(dòng)tomcat,訪問

認(rèn)證框中的用戶名和密碼都是 tomcat,之后會(huì)進(jìn)入下面這個(gè)頁面
點(diǎn)擊OSGi Console,進(jìn)入/osgiapp的管理界面
可以看到,org.extwind.test.bundle已經(jīng)被安裝了,因?yàn)镺SGi-App啟動(dòng)時(shí)會(huì)將根目錄中的jar包作為bundle自動(dòng)安裝
控制臺(tái)提供了4個(gè)功能:安裝,啟動(dòng),停止,卸載。 在以后的版本中會(huì)逐步加強(qiáng)控制臺(tái)的管理功能。
在測試bundle中注冊(cè)了3個(gè)資源


























3個(gè)資源的鏈接分別是
http://localhost:8080/osgiapp/files/test.ini
http://localhost:8080/osgiapp/test.do
http://localhost:8080/osgiapp/resource/date.jsp
這里的jsp并沒有使用Equinox的JspServlet,而是作為一個(gè)resource進(jìn)行注冊(cè)
現(xiàn)在,可以通過OSGi Console 對(duì)模塊進(jìn)行熱插拔了。
到這里,已經(jīng)基本使用了Tomcat-OSGi的簡單功能,更多的功能正在開發(fā)中。
獲取最新Tomcat-OSGi的源碼:
http://code.google.com/p/extwind
加入Extwind Group馬上開始討論
http://groups.google.com/group/extwind