關(guān)于本文 本文介紹如何將一個OSGi Application部署到Tomcat-OSGi中,你會發(fā)現(xiàn)這是一件非常簡單的事情。 在本文的最后部分有相關(guān)資源的下載鏈接和文檔鏈接 一、準(zhǔn)備工作 準(zhǔn)備工作分為兩個部分:準(zhǔn)備一個OSGi Application 和 準(zhǔn)備Tomcat-OSGi運(yùn)行環(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的,點(diǎn)擊這里下載Projects 2. 準(zhǔn)備Tomcat-OSGi運(yùn)行環(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é)點(diǎn)添加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,點(diǎn)擊這里下載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,可以運(yùn)行它進(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中,而無需任何代碼級別的修改。 有一點(diǎn)點(diǎn)區(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)錯誤。 相關(guān)資源 Extwind的Google Group: http://groups.google.com/group/extwind Extwind的Google Project: http://code.google.com/p/extwind Tomcat-OSGi-alpha-2 all-in-one 下載地址 http://extwind.googlecode.com/svn/trunk/dist/Tomcat-OSGi/Tomcat-OSGi-all-in-one.rar Extwind SVN: http://extwind.googlecode.com/svn/trunk/ jpetstore-osgi-demo的bundles下載地址 http://extwind.googlecode.com/svn/trunk/demo/jpetstore-osgi-demo/Bundles.rar jpetstore-osgi-demo的projects下載地址 http://extwind.googlecode.com/svn/trunk/demo/jpetstore-osgi-demo/Projects.rar 構(gòu)建jpetstore-osgi-demo的演示過程: Developing Equinox/Spring-osgi/Spring Framework Web Application Part 1 - 顯示首頁 Developing Equinox/Spring-osgi/Spring Framework Web Application Part 2 - 使用Spring-OSGI Developing Equinox/Spring-osgi/Spring Framework Web Application Part 3 - 找到我的Bean 構(gòu)建新版jpetstore-osgi-demo的相關(guān)問題: Tomcat-OSGi Demo: JPetStoreOSGi(Spring-osgi 1.2.0)