關(guān)于本文
本文記錄了將Spring Web Application應(yīng)用到OSGI環(huán)境中,也就是OSGI Web應(yīng)用。
[請點擊這里下載本文的Eclipse工程]
org.phrancol.osgi.demo.launcher工程中啟動應(yīng)用。
一、準備工作
1,JDK 1.5
2,Eclipse 3.3-jee (MyEclipse)
3,Spring-framework-2.1-m3
4,Spring-osgi-1.0-m2
二、搭建環(huán)境
1,首先當然需要一個Http Server,那就用Eclipse自帶的Jetty吧。
2,將Jetty和它的依賴包作為 Plugin 工程導(dǎo)入Eclipse, Import -> Plug-ins and fragments -> Next
3,創(chuàng)建一個普通工程做為Eclipse Launch的存放目錄 org.phrancol.osgi.demo.launcher
4,Open Run Dialog ... -> OSGI Framework -> New Configuration ,名字改為org.phrancol.osgi.demo.web.launcher,在
Common面板Save as 里面的 Shared file指定目錄到 org.phrancol.osgi.demo.launcher
6,在OSGI輸入exit退出,(注:如果不退出,那么它將駐留內(nèi)存,大概會消耗20K的內(nèi)存)
三、Equinox/Spring-osgi環(huán)境
導(dǎo)入Spring-osgi和它的依賴包(注:導(dǎo)入Spring包的時候,plug-in Location 要指定Spring-osgi的lib目錄),導(dǎo)入完畢后,形成的project結(jié)構(gòu)如下圖

四、jpetstore
使用Spring自帶的jpetstore,代碼和配置文件都是現(xiàn)成的,能省去一些不必要的開發(fā)。
五、首頁
jpetstore默認是springmvc,向HttpService注冊Servlet或是Resource,jpetstore里面需要注冊的servlet就是ContextLoaderServlet和DispatcherServlet,resource則是view層的jsp等。
1,創(chuàng)建個plug-in project ,OSGI Framework選擇Equinox,創(chuàng)建Activator,org.phrancol.osgi.jpetstore.springmvc
2,創(chuàng)建一個web目錄,這個目錄就是web應(yīng)用的目錄,將jpetstore里面的WEB-INF/jsp目錄拷貝進去
3,在 META-INF 目錄中創(chuàng)建 dispatcher 目錄,將petstore-servlet.xml拷貝進去,修改成如下代碼



























4,在Activator的start(BundleContext context)里面注冊servlet和resource,代碼如下




















注意依賴包關(guān)系
啟動后,在訪問http://localhost/shop/index.do頁面,報錯,看來要解決一下標簽庫問題,在web目錄中建立一個WEB-INF目錄,將c.tld, fmt.tld拷貝進去,然后在osgi控制臺refresh springmvc,再訪問這個頁面,發(fā)現(xiàn)沒有圖片,把jpetstore/images目錄拷貝到web目錄下,再refresh一下,OK,首頁出來了。
六、結(jié)束語
這部分簡單記錄了如何使用springmvc,下部分將記錄如何將jpetstore的各個層通過spring-osgi應(yīng)用起來