Spring.DM版HelloWorld


摘要:

本文主要描述使用Spring.DM2.0,創建OSGi的HelloWorld演示程序,理解Spring.DM的OSGi框架實現機制。

環境描述:

項目 版本
Eclipse 3.7.x
JDK 1.6.x
Sprng.DM spring-osgi-2.0.0.M1-with-dependencies 下載地址

一、環境准備

將spring-osgi-2.0.0.M1-with-dependencies ,解壓到一個文件夾中,你能看到以下目錄:

image

在Eclipse中點擊菜單:File->Import,就會出現導入的對話框,如下圖

image

選中“Plug-ins and Fragments”,點擊“Next>”,就會出現導入選項對話框,如下圖

image

在"Import From”中選擇“Directory”,點及后面的”Browse”瀏覽我們剛才解壓spring.dm的文件夾目錄中的"dist“文件夾,然后點”Next>”,

會出現導入對話框,導入如下圖選中的jar包,點擊“finish”,如圖所示

image

然后同上面的步驟,導入spring-osgi-2.0.0.M1-with-dependencies 解壓目錄中的lib,選擇的jar包如下圖所示,點擊“finish”完成導入

image

一共從dist和lib目錄里面導入了15個包,

  1. org.springframeork.osgi.bundle.core 
  2. org.springframeork.osgi.bundle.extender 
  3. org.springframeork.osgi.bundle.io

這3個包是spring.dm的核心包,extender包完成了服務的發布和注入的功能,它會在META-INF下的spring目錄里面找xml文件,來完成配置工作;

image

這幾個包是org.apache.commons.logging的依賴包,否則會提示如下錯誤:

Reason: Missing Constraint: Import-Package: org.apache.commons.logging; version="[1.1.1,2.0.0)"

最后你能看到在Package Explorer視圖里面看到如下的結果:

image

到這里就准備好了包引用環境

二、配置OSGi運行配置

在eclipse菜單操作:Run->Run Configurations…,就會出現運行配置的窗口,在左面的面板中右鍵點擊“OSGi Framework”,點擊“New”,如下圖所示

image

會出現運行配置對話框,如下圖所示;

image

在上圖中Workspace中選擇運行spring.dm所需要的bundle,所上圖所示那個打的紅色矩形框,在Target Platform中選擇一個osgi和一個loggin包,如上圖所示,點擊checkbox”Only show selected”,應該和上圖一樣,點擊”Validate Bundles”驗證綁定是否正確,我們先把這個run configuration的name設置為:Run_Spring.DM,點擊”Apply”按鈕保存,最后點擊“Run”按鈕,運行配置,在Console窗口中能夠看到,如下圖:

image

有一個警告(要解決警告問題請查看:Spring.DM web 開發環境搭建 中注意事項章節),先忽略,在控制台按回車鍵,然后輸入:ss,查看插件運行狀態,如下圖所示

image

這表示,我們的spring.dm環境已經配置好了,接下來我們就要來個HelloWorld了!

三、創建Helloworld演示

在Eclipse菜單中:File->New->Project…,在New Project對話框中選擇如下圖所示(plug-in project)

image

在上圖中點擊“Next>”就會出現新建工程對話框,選擇如下圖所示

image

在上圖中把項目名稱改為:spring.dm.helloworld,在“Target Platform”中選擇”an OSGi framework:standard”,點擊“Next>”

image

在上圖中設置:Provider,然后點擊“Finish”完成項目的創建,新項目創建好后,如下圖中紅框所示

image

由於我們開發spring.dm不需要Activator,所以要把src下面包“spring.dm.helloworld”中的“Activator.java”刪除掉,刪除后如下圖所示

image

在上圖中的META-INF中的MANIFEST.MF文件中出現了一個警告,我們雙擊打開MANIFEST.MF文件,選擇MANIFEST標簽,如下圖所示

image

 

在上圖中出現了一個警告標志,如長紅色矩形框所示,我們把這一行刪除掉,然后保存;否則會出現找不到Activator的錯誤。目前項目如下圖所示:

image

在上圖中src下面包spring.dm.helloworld包下面創建一個HelloWorld的java類文件,如下圖所示

image

image

在HelloWorld類中寫start和stop兩個方法,打印出下面的狀態,如下所示,

image

在工程中META-INF文件夾中,新建“spring”文件夾,並在spring文件夾中新建一個helloworld.xml文件,如下圖所示:

image

helloworld.xml文件的內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  
  <!--Bean定義 -->
  <bean name="hello" class="spring.dm.helloworld.HelloWorld" init-method="start" destroy-method="stop" >
  </bean>
  		
</beans>

這個bean的配置和我們在使用spring的配置的時候一樣,當我們啟動helloworld的時候會調用start方法,控制台會出現“我正在啟動”,當我們停止helloworld的時候,會調用stop方法,在控制台會打印出“我正在關閉”。

好了,我們的helloworld已經完成了

四、運行HelloWorld

在eclipse菜單中:Run->Run Configurations…,就會出現以下界面,如下圖所示

image

在上圖中Workspace中把我們新建的helloworld包選中,如上圖所示,點擊“Run”按鈕,運行,我可以看到如下結果,如下圖所示:

image

我們在控制台中回車,然后輸入:ss ,回車,對狀態進行查詢,結果如下

image

在上圖中我們helloworld已經啟動了,我們用命令來停止helloworld,在控制台輸入stop 23,回車

image

我們在控制台可以看到,輸出了“我正在關閉”,輸入ss再查詢狀態,如下圖所示:

image

在上圖中可以看到,我們helloworld已經處於resolved狀態了。

目前我們已經成功地helloworld出來了!

想了解更多OSGi方面的內容,請持續關注我在博客園的博客.http://herobeast.cnblogs.com.謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM