<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    閑人野居
    好好學習,天天向上
    posts - 57,  comments - 137,  trackbacks - 0
      接觸了osgi也這么久了,其中也走了不少的彎路。為了更好的推廣osgi,并避免新手能少走一些彎路,接下來的幾篇文章,我會通過幾個簡單的實例,來介紹一下如何快速的掌握osgi。其實,網上有不少好的文章推薦,順便也可以比較一下。BlueDavy的osgi 實戰是值得推薦的,當初也是看了之后,少走了很多彎路。參見網址:http://www.tkk7.com/BlueDavy/。ModuleFusion 也是一個不錯的項目,里面集成了現有的優秀框架,包括hibernate,guice,wicket等。 參見網址:http://code.google.com/p/modulefusion/。
      廢話少說,就從一個簡單的Helloworld開始吧。
      要做項目,少不了工具。Eclipse,反正搞java的基本都應該有了,這里用的是最近的3.4.1版本,以前一直用3.3.1,這兩天剛更新。java就是這個比較討厭,很多東西不停的更新,然后手上的工具包也得不停的更新。osgi 實現,當然首選equinox,版本也是3.4.1。其實Eclipse里面已經包括了equinox,當然單獨下載也沒有問題??戳丝磂quinox,最近又增加了不少的服務,其實很多都是用不著的,別被這些東東嚇著。
      簡單的介紹一下需要的bundle:
      org.mortbay.jetty_5.1.14                 jetty 容器,當然是需要的,如果你不需要外部web服務器的話。
      org.eclipse.osgi_3.4.2.                這是核心的equinox實現,也就是系統bundle
      org.eclipse.osgi.services_3.1.2            這也是必備的,作為osgi服務接口
      org.eclipse.equinox.common_3.4.0            這也是必備的,equinox的共同核心
      org.eclipse.equinox.registry_3.4.0        這是用于equinox 插件擴展的,也是必須的。plugin.xml就是這個bundle處理的
      org.eclipse.equinox.http.servlet_1.0.1        http servlet包,包括了主要的proxyServlet類,作為主要的橋接Servlet
      org.eclipse.equinox.http.registry_1.0.1        http servlet,resource 注冊服務
      org.eclipse.equinox.http.jetty_1.1.0        主要的用于啟動jetty的代碼
      javax.servlet_2.4.0                    servlet規范
      org.apache.commons.logging_1.0.4            用于處理日志
      以上的包都是必須的。
      其他可選的包,以后再介紹。
      好了,先在eclipse中建一個項目吧。創建plugin project而不是java project。當然你也可以轉成pluign project。
      如以下的圖,一直next
     


      提一下幾個重要的文件:
      osgi bundles,必需的文件為MANIFEST.MF 大寫,在META-INF下面
      plugin.xml,這是eclipse的插件文件,用于擴展使用。
      至于build.properties是用于打包的,可以不需要。
     
      修改一下相應的信息,如下圖:基本上已經創建好了。
      
      簡單說明一下:ID,也就是Bundle-SymbolicName 這是必須的。version 也就是Bundle-Version 也是必須的。其他可以隨便。
     
      下面說明一下,我們需要幾個重要的包,所以需要引入,點擊Dependencies右邊的import packages 的add。
      增加后,如下圖
     
      說明一下,如果你需要引入相應的類,就像你在classpath中引入包一下一樣。 
      由于,我們需要擴展Servlet,所以還需要http.servlets擴展,所以需要引入bundle:..http.registry。如下圖:
     
      下面創建一個簡單的HelloServlet
      public class HelloServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            doPost(req, resp);
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            resp.setContentType("text/html");
            resp.getWriter().print("My fist osgi application");
            resp.getWriter().close();
        }
    }
     接下來是關鍵的一步,定義擴展
     如下圖
     
     說明一下:class:org.demo.HelloServlet 就是我們創建的servlet
              alias:用于瀏覽器訪問的路徑,如http://localhost:8080/hello
     
     基本已經就緒,可以啟動。
     創建一個新的osgi framework 運行配置,如下圖:
     
     選擇上面的幾個bundle,以及你創建的項目。然后運行就可以了,默認的端口為80,如果需要更改,配置參數
     org.osgi.service.http.port=端口號
     如下圖:
     
     現在可以直接在瀏覽器中訪問了,一個osgi 應用已經完成。
     在console中輸入ss,可以看到下面的提示,表示你的bundles基本已經運行正常。
     Framework is launched.
    id    State       Bundle
    0    ACTIVE      org.eclipse.osgi_3.4.2.R34x_v20080826-1230
    1    ACTIVE      org.demo.helloworld_1.0.0
    2    ACTIVE      org.eclipse.equinox.registry_3.4.0.v20080516-0950
    3    ACTIVE      org.eclipse.osgi.services_3.1.200.v20071203
    4    ACTIVE      javax.servlet_2.4.0.v200806031604
    5    ACTIVE      org.eclipse.equinox.http.registry_1.0.100.v20080427-0830
    6    ACTIVE      org.eclipse.equinox.http.jetty_1.1.0.v20080425
    7    ACTIVE      org.eclipse.equinox.http.servlet_1.0.100.v20080427-0830
    8    ACTIVE      org.eclipse.equinox.common_3.4.0.v20080421-2006
    9    ACTIVE      org.mortbay.jetty_5.1.14.v200806031611
    10    ACTIVE      org.apache.commons.logging_1.0.4.v20080605-1930

     
     
     
     
     



    posted on 2009-02-12 20:36 布衣郎 閱讀(6154) 評論(8)  編輯  收藏 所屬分類: eclipse

    FeedBack:
    # re: osgi 入門
    2009-02-12 20:50 | ghost
    最近怎么樣?在哪呢?還在老家?
    --zwz  回復  更多評論
      
    # re: osgi 入門
    2009-02-12 23:46 | leekiang
    兄弟你寫了這么多,可我還是不知道osgi是什么、做什么用  回復  更多評論
      
    # re: osgi 入門
    2009-02-13 08:49 | rmn190
    嚴重同意的leekiang的話, 對一個入門的來說, 可能第一點是想知道這個osgi是個什么?它能做什么? 它的核心概念是什么?

    至于寫例子倒是次要些了.   回復  更多評論
      
    # re: osgi 入門
    2009-02-13 17:56 | 布衣郎
    @rmn190
    同意你的看法,不過這只是開頭而已,接下來,會慢慢解析osgi。以一個例子開頭,只是為了加深印象而已。  回復  更多評論
      
    # re: osgi 入門
    2009-02-13 22:14 | 與你同飛
    謝謝樓主無私的分享,期待你的后續文章!  回復  更多評論
      
    # re: osgi 入門
    2009-03-20 03:53 | osgi
    In setup Extensions step, I cannot create /hello(servlet), the only thing I can create is Generic text. Please advice.  回復  更多評論
      
    # re: osgi 入門
    2009-06-10 13:01 | 阿里哇
    很好的文章,謝謝。
    也特別推薦 BlueDavy的osgi 實戰。  回復  更多評論
      
    # re: osgi 入門[未登錄]
    2009-06-25 09:56 | 爬山虎
    大哥啊。。
    你的這個例子我怎么運行不了。。。。  回復  更多評論
      

    <2009年2月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    1234567

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 357218
    • 排名 - 155

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品亚洲а∨天堂2021| 亚洲国产a级视频| 久久久久国色AV免费看图片 | 国产精品亚洲mnbav网站| 亚洲精品在线视频| 亚洲伊人久久精品影院| 亚洲不卡av不卡一区二区| 亚洲蜜芽在线精品一区| 亚洲制服丝袜第一页| 亚洲欧美中文日韩视频| 美女黄频免费网站| 久久毛片免费看一区二区三区| 精品四虎免费观看国产高清午夜| 久久国产精品免费专区| 99久久免费国产香蕉麻豆| 插B内射18免费视频| 免费亚洲视频在线观看| 最新亚洲成av人免费看| 亚洲精品自产拍在线观看| 亚洲一区二区女搞男| 亚洲中文字幕在线第六区| 亚洲Aⅴ无码专区在线观看q| 亚洲一区二区三区在线观看蜜桃 | 在线免费观看一级片| 亚洲精品无码不卡在线播放HE| 亚洲人配人种jizz| a高清免费毛片久久| 两性刺激生活片免费视频| 亚洲片国产一区一级在线观看| 亚洲精品国产福利片| 男女作爱免费网站| 国产h肉在线视频免费观看| 亚洲av无码不卡私人影院| 亚洲福利电影一区二区?| 免费国产黄网站在线观看动图| 永久看日本大片免费35分钟| 亚洲高清国产拍精品青青草原| 亚洲午夜成激人情在线影院| 亚洲精品黄色视频在线观看免费资源 | 午夜视频免费成人| 亚洲av片劲爆在线观看|