關于本文 本文介紹如何將一個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)