轉(zhuǎn)載自:http://blog.sina.com.cn/s/blog_438308750100e4bv.html
一、準(zhǔn)備工作
準(zhǔn)備工作分為兩個部分:準(zhǔn)備一個OSGi Application 和 準(zhǔn)備Tomcat-OSGi運行環(huán)境
1. 準(zhǔn)備一個OSGi Application
Tomcat-OSGi已經(jīng)準(zhǔn)備了一個應(yīng)用程序:jpetstore-osgi-demo,它是將spring sample - jpetstore加以修改而成的OSGi應(yīng)用程序。
jpetstore-osgi-demo的最新版本是基于spring-framework-2.5.6和spring-osgi-1.2.0的,點擊這里下載Projects
2. 準(zhǔn)備Tomcat-OSGi運行環(huán)境
1.> 下載Tomcat的最新版本 apache-tomcat-6.0.18
2.> Tomcat-OSGi:Tomcat-OSGi-all-in-one.rar
解壓縮Tomcat-OSGi-all-in-one.rar
將2個jar包拷貝至Tomcat-home/lib 目錄下
將2個xml文件拷貝至tomcat-home/conf目錄下
將war包拷貝至Tomcat-home/webapps 目錄下
server.xml只是在host節(jié)點添加2個屬性,如下:
tomcat-users.xml 定義了控制臺權(quán)限,如下
二、將OSGi 應(yīng)用程序?qū)С鰹閎undle
將下載的projects.rar解壓縮,并在eclipse中作為plug-in導(dǎo)入它們,org.extwind.osgi.demo.jpetstoreosgi.launcher需要作為一個普通project導(dǎo)入,這些projects包含了源代碼,方便你進(jìn)行調(diào)試。
Tomcat-OSGi已經(jīng)準(zhǔn)備好了這些bundle,點擊這里下載bundles
通過eclipse的導(dǎo)出功能,將他們導(dǎo)出為bundle jar包,需要注意的是,org.apache.jasper, jetty,javax.servlet.*和org.eclipse.osgi是不需要導(dǎo)出的。(在org.extwind.osgi.demo.jpetstoreosgi.launcher中有一個導(dǎo)出腳本Exporter.xml,可以運行它進(jìn)行導(dǎo)出)
三、在Tomcat-OSGi中部署bundle
在tomcat-home/webapps中新建一個目錄JPetStoreOSGi,在JPetStoreOSGi目錄中新建一個空文件osgi.ini,并將導(dǎo)出的bundles拷貝到該目錄下。
執(zhí)行spring-framework-2.5.6/samples/jpetstore/db/hsqldb/server.bat 啟動數(shù)據(jù)庫
現(xiàn)在,準(zhǔn)備工作已經(jīng)完成了,在瀏覽器中輸入 http://localhost:8080/console 進(jìn)入OSGi控制臺,你會發(fā)現(xiàn)所有bundle都已經(jīng)安裝好了,將所有的bundle都啟動了,(建議先啟動org.springframework.osgi.web.extender)。
現(xiàn)在是時候來看看JPetStoreOSGi部署到Tomcat-OSGi中后的效果了,在瀏覽器中訪問下面這個地址
http://localhost:8080/JPetStoreOSGi/shop/index.do
目前osgi.ini中支持properties屬性 osgi.console,啟動osgi控制臺。
在Tomcat-OSGi alpha2版本中,支持Equinox-JspServlet的注冊,并兼容其URI pattern,也就是說,在eclipse的開發(fā)環(huán)境中開發(fā)出來的應(yīng)用程序可以直接部署到Tomcat-OSGi中,而無需任何代碼級別的修改。
有一點點區(qū)別就是,在Tomcat-OSGi中已經(jīng)export了javax.servlet(2.4),javax.servlet.jsp(2.1)和org.apache.jasper,因此在Tomcat-OSGi中這些bundle是不需要加入的。
勿在app中使用org.apache.jasper,會導(dǎo)致其他應(yīng)用程序的jsp出現(xiàn)錯誤。