大年初三,到台北晃了一下,許久未逛重慶南路的書店,差點錯過一本簡體中文書:OSGi原理與最佳實踐。而我的Eclipse 3.5因安裝了Pax,org.eclipse.org核心套件被遮蔽,只好再下載新的Eclipse 3.5的SR1版,其OSGi核心也升級了。這次內容是用OSGi啟動Http Server,而Eclipse預設用的是Jetty,書中示例用Eclipse 3.4,而我根據其package內選了如下:
id State Bundle
0 ACTIVE org.eclipse.osgi_3.5.1.R35x_v20090827 (OSGi核心)
1 ACTIVE org.eclipse.osgi.util_3.2.0.v20090520-1800 (我加的)
2 ACTIVE org.apache.commons.logging_1.0.4.v200904062259 (必須)
3 ACTIVE javax.servlet.jsp_2.0.0.v200806031607 (我加的)
4 ACTIVE org.mortbay.jetty.util_6.1.15.v200905182336 (我加的)
5 ACTIVE javax.servlet_2.5.0.v200806031605 (必須)
6 ACTIVE org.eclipse.equinox.http.jetty_2.0.0.v20090520-1800 (必須,Equinox對Jetty)
7 ACTIVE org.mortbay.jetty.server_6.1.15.v200905151201 (必須,Jetty Server)
8 ACTIVE org.eclipse.osgi.services_3.2.0.v20090520-1800 (必須)
9 ACTIVE org.eclipse.equinox.http.servlet_1.0.200.v20090520-1800 (必須)
果然輸入http://localhost後,出現Jetty版的HTTP ERROR 404,表示Jetty Server有在運作。而在[Run Configuration]裡編輯OSGi Framework裡的Arguments頁籤裡的VM arguments,在原有參數後添加以下內容,就可以變成Listen 8080 port了:
-Dorg.osgi.service.http.port=8080
最大的抱怨是,當上次結束[Run Configuration]是停留在OSGi Framework設定下,下次啟動[Run Configuration]時,在Load OSGi bundles等得超久,一兩分鐘要吧!