關于本文
本文介紹如何將一個OSGi Application部署到Tomcat-OSGi中,你會發現這是一件非常簡單的事情。
在本文的最后部分有相關資源的下載鏈接和文檔鏈接
一、準備工作
準備工作分為兩個部分:準備一個OSGi Application 和 準備Tomcat-OSGi運行環境
1. 準備一個OSGi Application
Tomcat-OSGi已經準備了一個應用程序:jpetstore-osgi-demo,它是將spring sample - jpetstore加以修改而成的OSGi應用程序。
jpetstore-osgi-demo的最新版本是基于spring-framework-2.5.6和spring-osgi-1.2.0的,點擊這里下載Projects
2. 準備Tomcat-OSGi運行環境
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節點添加2個屬性,如下:



tomcat-users.xml 定義了控制臺權限,如下










二、將OSGi 應用程序導出為bundle
將下載的projects.rar解壓縮,并在eclipse中作為plug-in導入它們,org.extwind.osgi.demo.jpetstoreosgi.launcher需要作為一個普通project導入,這些projects包含了源代碼,方便你進行調試。
Tomcat-OSGi已經準備好了這些bundle,點擊這里下載bundles
通過eclipse的導出功能,將他們導出為bundle jar包,需要注意的是,org.apache.jasper, jetty,javax.servlet.*和org.eclipse.osgi是不需要導出的。(在org.extwind.osgi.demo.jpetstoreosgi.launcher中有一個導出腳本Exporter.xml,可以運行它進行導出)
三、在Tomcat-OSGi中部署bundle
在tomcat-home/webapps中新建一個目錄JPetStoreOSGi,在JPetStoreOSGi目錄中新建一個空文件osgi.ini,并將導出的bundles拷貝到該目錄下。
執行spring-framework-2.5.6/samples/jpetstore/db/hsqldb/server.bat 啟動數據庫
現在,準備工作已經完成了,在瀏覽器中輸入 http://localhost:8080/console 進入OSGi控制臺,你會發現所有bundle都已經安裝好了,將所有的bundle都啟動了,(建議先啟動org.springframework.osgi.web.extender)。
現在是時候來看看JPetStoreOSGi部署到Tomcat-OSGi中后的效果了,在瀏覽器中訪問下面這個地址
http://localhost:8080/JPetStoreOSGi/shop/index.do
目前osgi.ini中支持properties屬性 osgi.console,啟動osgi控制臺。
在Tomcat-OSGi alpha2版本中,支持Equinox-JspServlet的注冊,并兼容其URI pattern,也就是說,在eclipse的開發環境中開發出來的應用程序可以直接部署到Tomcat-OSGi中,而無需任何代碼級別的修改。
有一點點區別就是,在Tomcat-OSGi中已經export了javax.servlet(2.4),javax.servlet.jsp(2.1)和org.apache.jasper,因此在Tomcat-OSGi中這些bundle是不需要加入的。
勿在app中使用org.apache.jasper,會導致其他應用程序的jsp出現錯誤。
相關資源
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
構建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
構建新版jpetstore-osgi-demo的相關問題:
Tomcat-OSGi Demo: JPetStoreOSGi(Spring-osgi 1.2.0)