某軟件項(xiàng)目開發(fā)手冊.doc
《某軟件項(xiàng)目開發(fā)手冊.doc》由會員分享,可在線閱讀,更多相關(guān)《某軟件項(xiàng)目開發(fā)手冊.doc(52頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、文件編號:P01-01 分 冊 號:1/1 頁 碼:52 密 級:C InforGuard 項(xiàng)項(xiàng)目目 開開發(fā)發(fā)手手冊冊 中創(chuàng)軟件商用中間件股份有限公司 2010 年 05 月 變變更更記錄記錄 變更版本日期圖表、表格、段落號 A/M/D 原因與修改情況描述修訂人審核人 1.02010-1-1ALLA創(chuàng)建文檔李銘 注:A 增加 M 修改 D 刪節(jié) 目錄 核高基 6-1 項(xiàng)目 使用手冊 I 目目錄錄 第第 1 章章 概述概述.1 1.1. 開發(fā)場景.1 1.2. 基本概念.1 第第 2 章章 搭建開發(fā)環(huán)境搭建開發(fā)環(huán)境.2 2.1. 準(zhǔn)備開發(fā)工具.2 2.2. 工具安裝及環(huán)境配置.2 2.2.1.
2、安裝jdk及配置java環(huán)境2 2.2.2. 安裝maven及配置倉庫.3 2.2.3. Eclipse中安裝m2eclipse插件4 2.2.4. Eclipse中安裝RAP開發(fā)環(huán)境4 2.2.5. Eclipse中安裝國際化編輯插件5 2.2.6. Eclipse中導(dǎo)入編碼樣式5 2.2.7. 設(shè)置Eclipse的默認(rèn)編碼5 第第 3 章章 開發(fā)案例開發(fā)案例.7 3.1. 開發(fā)前準(zhǔn)備.7 3.2. 組織結(jié)構(gòu).7 3.2.1. 目錄結(jié)構(gòu).7 3.2.2. 源碼組織.8 3.3. 開發(fā)流程.8 3.3.1. 建立Eclipse插件工程8 3.3.2. 添加依賴.9 3.3.3. 添加導(dǎo)出包.1
3、0 3.3.4. 開發(fā)聲明式服務(wù)(DService)11 第第 4 章章 常見問題解答常見問題解答.23 第第 5 章章 參考參考.24 附錄一附錄一 SETTING.XML.25 附錄二附錄二 常用動(dòng)名詞常用動(dòng)名詞.33 附錄三附錄三 本地化資源文件的創(chuàng)建方法本地化資源文件的創(chuàng)建方法.34 附錄四附錄四 MANIFEST.MF 35 附錄五附錄五 POM.XML.36 附件六附件六 OSGI 命令說明命令說明.39 目錄 核高基 6-1 項(xiàng)目 使用手冊 II 附件七附件七 METADATA.XML.41 概述 核高基 6-1 項(xiàng)目 使用手冊 1 章 1 章 概概述述 該文檔是為 InforG
4、uard UTMP 開發(fā)人員開發(fā)新功能所編寫的規(guī)范性文檔。 1.1. 開開發(fā)發(fā)場場景景 當(dāng) UTMP 添加新的功能時(shí),開發(fā)人員可以根據(jù)該文檔更快更有效的進(jìn)行開發(fā)。 1.2. 基基本本概概念念 OSGi:OSGi(JSR 291)也叫 Java 語言的動(dòng)態(tài)模塊系統(tǒng),它為模塊化應(yīng)用的開發(fā)定義了一個(gè) 基礎(chǔ)架構(gòu)。OSGi 容器已有多家開源實(shí)現(xiàn),比如 Knoflerfish、Equinox 和 Apache 的 Felix。 更多信息可以訪問: http:/www.osgi.org/Main/HomePage、http:/ Equinox:Equinox 是 Eclipse 中的項(xiàng)目之一,Equinox
5、 是作為 OSGI R4 RI 而知名的,同時(shí) 由于 Equinox 有 Eclipse IDE 這么個(gè)成功案例,反應(yīng)出了 Equinox 作為 OSGI 框架的優(yōu)勢。 更多信息可以訪問:http:/www.eclipse.org/equinox/、http:/www.riawork.org/。 Bundle:OSGi 服務(wù)框架定義的模塊化單元,稱之為一個(gè) Bundle。一個(gè) Bundle 由 java 的類 和其他資源組成,可以為終端用戶提供功能。Bundle 的描述信息存放在一個(gè) manifest 文件 中,這個(gè)文件包含在 JAR 文件中的 META-INF 目錄下,命名為 MANIFES
6、T.MF。通過 Bundle 的符號名稱和版本號可以在框架中惟一的確定一個(gè) Bundle。 Eclipse RAP: Eclipse RAP 項(xiàng)目的目的是讓開發(fā)人員能夠利用 Eclipse 開發(fā)模型來構(gòu)建 Rich,Ajax-enabled Web 應(yīng)用程序。主要運(yùn)用著名的 Eclipse 平臺擴(kuò)展點(diǎn)插件機(jī)制和一個(gè)包 含 SWT/JFace API 的 widget 工具包。RAP 項(xiàng)目旨在使開發(fā)人員能夠使用 Eclipse 開發(fā)模 型構(gòu)建富 Internet 應(yīng)用程序。RAP 允許開發(fā)人員使用豐富的 Java 庫和 Eclipse API 構(gòu) 建基于瀏覽器的 Ajax 應(yīng)用程序。它通過提供
7、SWT、JFace 和 Eclipse Workbench 的基于 Web 的實(shí)現(xiàn)來提供此項(xiàng)功能。 更多 RAP 信息可訪問:http:/www.eclipse.org/rap/。 搭建開發(fā)環(huán)境 核高基 6-1 項(xiàng)目 使用手冊 2 章 2 章 搭搭建建開開發(fā)發(fā)環(huán)環(huán)境境 2.1. 準(zhǔn)準(zhǔn)備備開開發(fā)發(fā)工工具具 JDK 1.5 或以上版本,下載地址: ftp:/192.168.51.11/Tools/Program/JDK/jdk-1_5_0_16-windows-i586-p.exe/ Maven 2.0.9 或以上版本,下載地址: ftp:/192.168.51.11/Tools/Program/
8、maven/apache-maven-2.2.1-bin.zip Eclipse 3.5 或以上版本,下載地址: ftp:/192.168.51.11/Tools/Program/%B1%E0%BC%AD%C6%F7/Eclipse/eclipse-java-galileo- SR2-win32.zip 注:192.168.51.11 的用戶名/密碼:user/123 2.2. 工工具具安安裝裝及及環(huán)環(huán)境境配配置置 2.2.1. 安裝安裝 jdk 及配置及配置 java 環(huán)環(huán)境境 1.安裝 Windows 操作系統(tǒng)上的 JDK 安裝程序是一個(gè) exe 可執(zhí)行程序,直接安裝即可,在安裝過程中 可
9、以選擇安裝路徑以及安裝的組件等,如果沒有特殊要求,選擇默認(rèn)設(shè)置即可。程序默認(rèn)的安裝路 徑在 C:Program FilesJava 目錄下。 2.環(huán)境變量設(shè)置: 配置步驟為: 1)右擊“我的電腦”,點(diǎn)擊“屬性”:選擇“高級”選項(xiàng)卡,點(diǎn)擊“環(huán)境變量”。 2)在“系統(tǒng)變量”中,設(shè)置 3 項(xiàng)屬性,JAVA_HOME,PATH,CLASSPATH(不分大小寫) JAVA_HOME 指明 JDK 安裝路徑,假設(shè) JDK 的版本為 1.6.0_16,安裝路徑為默認(rèn)路 徑, 則該值應(yīng)設(shè)為 C:Program FilesJavajdk1.6.0_16,此路徑下包括 lib,bin,jre 等 文件夾(此變量最
10、好設(shè)置,因?yàn)橐院筮\(yùn)行一體化管理平臺,eclipse 等都需要此變量) ; PATH 使得系統(tǒng)可以在任何路徑下識別 java 命令,設(shè)為:%JAVA_HOME%bin; CLASSPATH 為 java 加載類(class or lib)路徑,只有類在 classpath 中,java 命令才能 識別,設(shè)為:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar (要加.表示當(dāng) 前路徑),%JAVA_HOME%就是引用前面指定的 JAVA_HOME。 3.驗(yàn)證安裝成功: 1)打開“開始”“運(yùn)行” cmd java version 屏幕輸出 java 版本信息
11、說明安裝成功,否則說明配置錯(cuò)誤,需要重新進(jìn)行配置。 搭建開發(fā)環(huán)境 核高基 6-1 項(xiàng)目 使用手冊 3 2.2.2. 安裝安裝 maven 及配置及配置倉庫倉庫 1.安裝 1)下載并解壓至想要安裝的目錄 2)設(shè)置 Maven 系統(tǒng)環(huán)境變量,例如:MAVEN_HOME=E:apache-maven 3)添加%MAVEN_HOME%bin 至系統(tǒng)環(huán)境變量 PATH 中。 4)確認(rèn) Maven 的安裝: cmd mvn version 屏幕輸出 maven 版本說明安裝成功。 2.配置本地 Repository 本地 Repository 的默認(rèn)值是$user.home/.m2/repository/
12、。可以在 user configuration(即在 $MAVEN_HOME/conf/setting.xml)中改變本地 Repository 的位置。例如本地倉庫的位置在硬盤 的位置為:E:Repository。在 setting.xml 可以進(jìn)行如下配置: E:Repository 注意:本地 Repository 必須是絕對路徑。 3.配置代理 可以在 user configuration(即在$MAVEN_HOME/conf/setting.xml)中配置代理,配置如下: cvicseproxy true http 192.168.2.20 80 localhost releases
13、 admin loong2009 snapshots admin loong2009 搭建開發(fā)環(huán)境 核高基 6-1 項(xiàng)目 使用手冊 4 Trustie Repository1 central Human Readable Name for this Mirror. http:/58.20.54.58/content/groups/treleases Trustie Snapshots Repository1 public-snapshots Human Readable Name for this Mirror. http:/58.20.54.58/content/groups/tsnapsh
14、ots 注:setting.xml 配置文件見附件一 2.2.3. Eclipse 中安裝中安裝 m2eclipse 插件插件 在 eclipse 中選擇Help Install New Software .,在彈出的 Install 對話框的 Work with 文本框中 添加 m2eclipse 插件的安裝地址 http:/m2eclipse.sonatype.org/sites/m2e,選擇“Maven Integration for Eclipse (Required)”進(jìn)行安裝。 安裝完成之后需要在 eclipse 中自行指定在本機(jī)中 maven 的 Repository 位置。打開
15、 window/proferences 菜單,點(diǎn)擊 maven 配置項(xiàng)的 Installations,去掉默認(rèn)的 launch maven,添加機(jī)器 上的 maven 并選擇使用,點(diǎn)擊 maven 配置項(xiàng)的 user settings,選擇$MAVEN_HOME /conf/setting.xml 文件,完成配置。 2.2.4. Eclipse 中安裝中安裝 RAP 開開發(fā)環(huán)發(fā)環(huán)境境 打開 Eclipse,選擇Help Install New Software . 菜單。 在彈出的 Install 對話框的 Work with 文本框中輸入 RAP 的安裝地址,如 1.3 版本為: http:
16、/download.eclipse.org/rt/rap/1.3/tooling。 選擇列表中出現(xiàn)的 Rich Ajax Platform 并點(diǎn)擊下一步。 在詳細(xì)頁面點(diǎn)擊下一步。 在許可證頁面選擇同意并點(diǎn)擊完成按鈕。 安裝完成后確認(rèn)重啟 Eclipse。 Eclipse 重啟后會出現(xiàn)歡迎頁面,選擇 Rich Ajax Platform(RAP) 選擇 Install Target Platform 選擇確定按鈕。 搭建開發(fā)環(huán)境 核高基 6-1 項(xiàng)目 使用手冊 5 2.2.5. Eclipse 中安裝國中安裝國際際化化編輯編輯插件插件 打開 Eclipse,選擇Help Install New
17、Software . 菜單。 在彈出的 Install 對話框的 Work with 文本框中輸入 Jinto 的安裝地址: http:/www.guh- software.de/eclipse/。 選擇列表中出現(xiàn)的 OpenSource Tools 并點(diǎn)擊下一步。 在詳細(xì)頁面點(diǎn)擊下一步。 在許可證頁面選擇同意并點(diǎn)擊完成按鈕。 安裝完成后確認(rèn)重啟 Eclipse。 2.2.6. Eclipse 中中導(dǎo)導(dǎo)入入編碼樣編碼樣式式 打開 Eclipse,選擇Window PreferencesJavaCode StyleCode Templates 菜單。 點(diǎn)擊界面右面的 Import 按鈕,選擇 I
18、DCcodetemplates.xm 文件,點(diǎn)擊 Apply 按鈕。 當(dāng)新建 Java 接口/類時(shí),需要選擇 Generate comments,如下圖: 2.2.7. 設(shè)設(shè)置置 Eclipse 的默的默認(rèn)編碼認(rèn)編碼 打開 Eclipse,選擇Window PreferencesGeneralWorkspace菜單。 在 Text file encoding 中選擇 Other,并且把編碼改成 UTF-8。 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 6 章 3 章 開開發(fā)發(fā)案案例例 3.1. 開開發(fā)發(fā)前前準(zhǔn)準(zhǔn)備備 參照第 2 章搭建好開發(fā)環(huán)境。 3.2. 組組織織結(jié)結(jié)構(gòu)構(gòu) 3.2.1. 目目錄
19、結(jié)錄結(jié)構(gòu)構(gòu) 目錄目錄說明說明 Cloud-UI界面原型的 WEB 工程 Cloud-FlexFlex 開發(fā)工程 Cloud -web 存放展示層構(gòu)件工程 user-management 存放用戶管理工程 3.2.2. 源源碼組織碼組織 本項(xiàng)目主要的包結(jié)構(gòu)如下:com.cvicse.inforguard.utmp.模塊名.構(gòu)件名.分組名 3.3. 開開發(fā)發(fā)流流程程 3.3.1. 建立建立 Eclipse 插件工程插件工程 啟動(dòng) Eclispe, 從 Eclispe 的 File 菜單創(chuàng)建一個(gè) Eclipse 插件工程,F(xiàn)ile New Project Plug-in Development Pl
20、ug-in Project,輸入工程名 cloud-userman-impl,選擇合適的工程目錄,點(diǎn) 擊 next,進(jìn)入 Plug-in Project 向?qū)В渲猛瓿珊簏c(diǎn)擊 Finish,完成建立工作。 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 7 參考上圖設(shè)置,點(diǎn)擊 Finish 按鈕完成工程創(chuàng)建。 注意:(1)由于我們開發(fā)的是第一個(gè)版本,所以 Version 先寫成 0.0.1。(2)需要把”Generate an activator, a Java class that controls the plug-ins life cycle”取消勾選狀態(tài)。(3)如果開發(fā)的是 Web 插件,需
21、要把”This plug-in will make contributions to the UI”勾選上。 3.3.2. 添加依添加依賴賴 用 Plug-in Manifest Edit 打開 MANIFEST.MF 文件,切換到 Dependecies 視圖,如下圖。 在 Required Plug-ins 中加入依賴的插件。 在 Imported Packages 中加入依賴的包。 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 8 3.3.3. 添加添加導(dǎo)導(dǎo)出包出包 用 Plug-in Manifest Edit 打開 MANIFEST.MF 文件,切換到 Runtime 視圖,如下圖: 在
22、 Exported Packages 中添加要導(dǎo)出的包。 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 9 3.3.4. 開開發(fā)發(fā)聲明式服聲明式服務(wù)務(wù)(DService) 在這里我們將開發(fā)一個(gè)簡單的例子,這個(gè)例子包括以下部分: 發(fā)布一個(gè) OSGi 服務(wù)。 引用一個(gè) OSGi 服務(wù)。 使用構(gòu)件實(shí)例生命周期控制方法來激活和去活構(gòu)件實(shí)例。 為了舉例說明 DService 功能,我們將開發(fā)一個(gè)簡單的程序來展現(xiàn)它。這個(gè)例子包括 3 個(gè) Bundle, 其一是服務(wù)接口(Hello Service),對應(yīng) POJO project 其二是服務(wù)實(shí)現(xiàn),作為一個(gè)單獨(dú)的構(gòu)件位于單獨(dú)的 Bundle 中,并且該構(gòu)件提供
23、OSGi 服務(wù) (POJO-Impl),對應(yīng) POJO-Impl project 其三是服務(wù)使用方,也是作為一個(gè)單獨(dú)的構(gòu)件位于單獨(dú)的 Bundle 中,并且該構(gòu)件需要使用 Hello Service 接口的 OSGi 服務(wù),對應(yīng) POJO Client project。 首先,創(chuàng)建一個(gè) hello-api 的服務(wù)接口工程(創(chuàng)建過程見 3.3.1. ),添加一個(gè)接口類: com.cvicse.inforguard.utmp.example.hello.IHello,代碼如下: /* * * InforGuard Copyright 2010 CVICSE, Co.ltd . * All righ
24、ts reserved. * * Package: com.cvicse.inforguard.utmp.example.hello 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 10 * FileName: IHello.java * */ package com.cvicse.inforguard.utmp.example.hello; /* * * 描述: * * 服務(wù)接口 * * 創(chuàng)建日期 2010-6-1 * * author li_ming * version 1.0 * */ public interface IHello /* * 打招呼 * param name 姓名 * ret
25、urn 打招呼語句 */ public String sayHello(String name); 使 hello-api 工程支持 Maven,操作如下圖: 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 11 點(diǎn)擊“Enable Dependency Managerment”,彈出配置界面,填寫如下: 填寫完后,點(diǎn)擊“Finish”,這時(shí)候 pom.xml 文件會報(bào)錯(cuò),你需要把下面的代碼加入 pom.xml 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 12 的標(biāo)簽后面: org.codehaus.mojo build-helper-maven-plugin 1.1 add-source gener
26、ate-sources add-source src org.apache.felix maven-bundle-plugin 2.0.0 true $pom.artifactId com.cvicse.inforguard.utmp.example.hello 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 13 pom.xml 中各標(biāo)簽的詳細(xì)說明見附錄五。 雙擊 MANIFEST.MF,在 Runtime 中把 com.cvicse.inforguard.utmp.example.hello 包暴露出來, 詳見 3.3.3. 。 接下來只需要在 eclipse 中右擊工程或者 pom 文件,選擇
27、 run as maven install 即完成工程的構(gòu)建 工作。當(dāng) maven 報(bào)告INFO BUILD SUCCESSFUL 則 Hello Service 服務(wù)構(gòu)件的 jar 包已經(jīng)安裝到 maven 的本地庫中,同時(shí)生成一個(gè)副本位于工程根目錄的 target 下。 第二步創(chuàng)建 Hello 接口的實(shí)現(xiàn)工程:hello-impl,雙擊 MANIFEST.MF,在 Dependencies 中添加 hello-api 插件的依賴,詳見 3.3.2. 。 添加一個(gè) IHello 接口的實(shí)現(xiàn)類:com.cvicse.inforguard.utmp.example.hello.impl. Hel
28、loImpl,代碼 如下: /* * * InforGuard Copyright 2010 CVICSE, Co.ltd . * All rights reserved. * * Package: com.cvicse.inforguard.utmp.example.hello.impl * FileName: HelloImpl.java * */ package com.cvicse.inforguard.utmp.example.hello.impl; import com.cvicse.inforguard.utmp.example.hello.IHello; /* * * 描述:
29、* * 服務(wù)的實(shí)現(xiàn) * * 創(chuàng)建日期 2010-6-1 * * author li_ming * version 1.0 * */ public class HelloImpl implements IHello /* 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 14 * 構(gòu)造函數(shù) */ public HelloImpl() System.out.println(“HelloImpl starting“); /* (non-Javadoc) * see com.cvicse.inforguard.utmp.example.hello.IHello#sayHello(java.lang.Strin
30、g) */ public String sayHello(String name) String result = “hello “ + name; return result; 為了能夠管理這些構(gòu)件和讓 DService 框架識別我們寫的 pojo 并將之發(fā)布為 Hello 的 OSGi 服務(wù), 我們還必須要定義一個(gè)元數(shù)據(jù)文件,名稱為 metadata.xml(詳見附件七),位于本 project 的根目錄下。 其內(nèi)容如下: Component 節(jié)點(diǎn)聲明了一個(gè)構(gòu)件,classname 聲明了該構(gòu)件實(shí)現(xiàn)類,immediate 聲明該構(gòu)件不是 即時(shí)構(gòu)件,也就是說當(dāng) OSGi 框架中發(fā)現(xiàn)需要該服務(wù)
31、時(shí)才實(shí)例化該構(gòu)件。 Component 下的 service 節(jié)點(diǎn)表示本構(gòu)件會以構(gòu)件實(shí)例為服務(wù)對象對外提供 OSGi 服務(wù),服務(wù)的 接口默認(rèn)暴露出當(dāng)前構(gòu)件實(shí)現(xiàn)的所有接口,也可以在 service 節(jié)點(diǎn)下加入 provide 節(jié)點(diǎn)來決定該暴露 的詳細(xì)的接口,以及對應(yīng)的服務(wù)屬性等,詳見附件七。 Instance 節(jié)點(diǎn)表示在當(dāng)前構(gòu)件在運(yùn)行時(shí)被 DService 框架初始化完畢之后,根據(jù)配置來確定實(shí)例 化構(gòu)件的次數(shù),即有多少個(gè) Instance 就會有多少個(gè)構(gòu)件實(shí)例(注意不是指服務(wù)對象)。 源代碼和元數(shù)據(jù)定義完成之后,還需要使 hello-impl 工程支持 Maven,并修改 pom.xml: or
32、g.codehaus.mojo build-helper-maven-plugin 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 15 1.1 add-source generate-sources add-source src org.apache.felix maven-bundle-plugin 2.0.0 true $pom.artifactId com.cvicse.inforguard.utmp.example.hello.impl metadata.xml org.trustie.loong.modules.loong-dservice loong-dservice-plugin 1
33、.0.0 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 16 dservice-bundle com.cvicse.inforguard.utmp.example hello-api 0.0.1 bundle 本 project 所有工作做完之后,同樣只需要在 eclipse 中右擊 project,Run as Maven install,maven 會為我們將 project 打包成為 DService Bundle 安裝到 maven 本地庫中,并在 target 目 錄下生成同樣一份 jar 文件。 最后建立一個(gè)服務(wù)消費(fèi)工程 hello-client,雙擊 MANIFEST.MF,在 De
34、pendencies 中添加 com.cvicse.inforguard.utmp.example.hello的依賴,詳見 3.3.2. 。 添加一個(gè)服務(wù)使用類:com.cvicse.inforguard.utmp.example.hello.client.HelloClient,代碼如下: /* * * InforGuard Copyright 2010 CVICSE, Co.ltd . * All rights reserved. * * Package: com.cvicse.inforguard.utmp.example.hello.client * FileName: HelloCl
35、ient.java * */ package com.cvicse.inforguard.utmp.example.hello.client; import com.cvicse.inforguard.utmp.example.hello.IHello; /* * 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 17 * 描述: 服務(wù)消費(fèi)類 * 創(chuàng)建日期 2010-6-1 * author li_ming * version 1.0 * */ public class HelloClient implements Runnable /* * 兩個(gè)調(diào)用之間的延遲。 */ private static
36、final int DELAY = 5000; /* * Hello 服務(wù)。 * 通過容器注入。 * */ private IHello m_hello; / 需要引用的服務(wù)。 /* * 結(jié)束標(biāo)志。 */ private boolean m_end = false; /* * 名稱屬性。 * 通過容器注入。 */ private String m_name; public HelloClient() System.out.println(“HelloClient starting“); /* * Run 方法。 * see java.lang.Runnable#run() */ public
37、void run() while (!m_end) try invokeHelloServices(); 開發(fā)案例 核高基 6-1 項(xiàng)目 使用手冊 18 Thread.sleep(DELAY); catch (InterruptedException ie) /* 將重新檢查 */ /* * 調(diào)用 hello 服務(wù)。 */ public void invokeHelloServices() for (int i = 0; m_hello != null leave empty if not used. releases admin loong2009 snapshots admin loong
38、2009 mirrorId repositoryId Human Readable Name for this Mirror. http:/ Trustie Repository1 central Human Readable Name for this Mirror. http:/58.20.54.58/content/groups/treleases Trustie Snapshots Repository1 public-snapshots Human Readable Name for this Mirror. http:/58.20.54.58/content/groups/tsna
39、pshots | or the command line, profiles have to have an ID that is unique. | | An encouraged best practice for profile identification is to use a consistent 附錄一 SETTING.XML 核高基 6-1 項(xiàng)目 使用手冊 29 naming convention | for profiles, such as env-dev, env-test, env-production, user- jdcasey, user-brett, etc.
40、| This will make it more intuitive to understand what the set of introduced profiles is attempting | to accomplish, particularly when you only have a list of profile ids for debug. | | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo. jdk-1.4 1.4 jdk1
41、4 Repository for JDK 1.4 builds http:/ default always | org.myco.myplugins | myplugin | 附錄一 SETTING.XML 核高基 6-1 項(xiàng)目 使用手冊 30 | | $tomcatPath | | | . | | NOTE: If you just wanted to inject this configuration whenever someone set target-env to | anything, you could just leave off the inside the activati
42、on- property. | env-dev target-env dev /path/to/tomcat/instance alwaysActiveProfile anotherAlwaysActiveProfile 附錄二 常用動(dòng)名詞 核高基 6-1 項(xiàng)目 使用手冊 31 附附錄錄二二 常常用用動(dòng)動(dòng)名名詞詞 常用名稱:常用名稱: 用戶user角色role 知識庫knowledge流程workflow 策略rule 資產(chǎn)asset 報(bào)表report 工單order 配置config組group 代理agent 視圖view 區(qū)域zone 機(jī)房machine room 線line節(jié)點(diǎn)node
43、 機(jī)架frame 動(dòng)作action 風(fēng)險(xiǎn)risk 拓?fù)鋞opology 模板template中心center 適配器adapter 權(quán)限popedom 日志log 狀態(tài)state 威脅threat 常用動(dòng)詞:常用動(dòng)詞: 添加add 刪除del 修改modify 查詢(返回一個(gè)對象)load 查詢(返回一組對象且查 詢包含過濾條件) query枚舉enum 分析analyse 統(tǒng)計(jì)stat 關(guān)聯(lián)correlate評估assess 獲取get設(shè)置set 附錄三 本地化資源文件的創(chuàng)建方法 核高基 6-1 項(xiàng)目 使用手冊 32 附附錄錄三三 本本地地化化資資源源文文件件的的創(chuàng)創(chuàng)建建方方法法 首先需在
44、Eclipse 中安裝 JInto 插件,安裝地址為 http:/www.guh-software.de/eclipse/。 在 src 中新建一個(gè) ResourceBundle File 文件 打開的對話框中 設(shè)置屬性文件前綴名 name 比如 eventInfo 選擇 language Chinese 選擇 Country China 點(diǎn)擊添加,添加一個(gè)文件為 eventInfo_zh_CN.properties 之后可以多次選擇 language conntry 點(diǎn)擊添加 創(chuàng)建多個(gè) properties 文件 點(diǎn)擊完成 finish 打開剛才創(chuàng)建的文件 Keys 列設(shè)置鍵 Chinese
45、(china)列設(shè)置相應(yīng)的值 附錄四 MANIFEST.MF 核高基 6-1 項(xiàng)目 使用手冊 33 附附錄錄四四 MANIFEST.MF Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-Vendor: %Bundle-Vendor Bundle-Localization: localization/eventInfo Bundle-SymbolicName: loong-admin-tools-event;singleton:=true Bundle-Version: 1.0.0.
46、qualifier Require-Bundle: org.eclipse.rap.ui,loong-integration-commons;bundle-version=“1.0.0“ Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Import-Package: org.osgi.service.event;version=“1.2.0“,org.trustie.loong.eventadmin.api 附錄五 POM.XML 核高基 6-1 項(xiàng)目 使用手冊 34 附附錄錄五五 po
47、m.xml 4.0.0 com.cvicse.inforguard.utmp.modules.web.usermanager usermanager 1.0.0 /pom.xml com.cvicse.inforguard.utmp.modules.web.usermanager user-manager-api 用戶管理 bundle 1.0.0 org.trustie.loong.modules.loong-webconsole loong-webconsolebundle-plugin 1.0.0 true localization, plugin.xml, resources 附錄五
48、POM.XML 核高基 6-1 項(xiàng)目 使用手冊 35 org.codehaus.mojo build-helper-maven-plugin 1.1 add-source generate-sources add-source src org.apache.felix maven-bundle-plugin 2.0.0 true $pom.artifactId com.cvicse.inforguard.utmp.example.hello org.trustie.loong.modules.loong-dservice loong-dservice-plugin 1.0.0 附錄五 POM.
49、XML 核高基 6-1 項(xiàng)目 使用手冊 36 dservice-bundle org.trustie.loong.webconsole.modules loong-integration-commons 1.0.0-SNAPSHOT org.trustie.loong.modules loong-eventadmin 1.0.1 附件六 OSGI命令說明 核高基 6-1 項(xiàng)目 使用手冊 37 附附件件六六 OSGi 命命令令說說明明 ss 命令列出所有 bundle,效果如下: 在 OSGi 控制命令臺中利用 install 命令安裝 exampleClient Bundle 應(yīng)用,用 ss
50、命令查看安裝后 的 Bundle 應(yīng)用信息及其狀態(tài)。效果如下: 在 OSGi 控制命令臺中利用 start 命令安裝 exampleClient Bundle 應(yīng)用,用戶可輸入姓名,利用 姓名查詢服務(wù)來判斷所輸入姓名是否有效,用 ss 命令查看啟動(dòng)后的 Bundle 應(yīng)用信息及其狀態(tài)。效 果如下: 附件六 OSGI命令說明 核高基 6-1 項(xiàng)目 使用手冊 38 用戶在在 OSGi 控制命令臺中,可利用 stop 命令來停止指定的 Bundle 應(yīng)用,和 start 使用方式 一樣。 用戶在在 OSGi 控制命令臺中,可利用 uninstall 命令來卸載指定的 Bundle 應(yīng)用,和 star
51、t 使用 方式一樣。 附件七 METADATA.XML 核高基 6-1 項(xiàng)目 使用手冊 39 附附件件七七 metadata.xml 在使用聲明式服務(wù)進(jìn)行開發(fā)時(shí),我們可以在元數(shù)據(jù)文件 metadata.xml 文件中對構(gòu)件自身屬性, 以及構(gòu)件所包含的各方面動(dòng)態(tài)的進(jìn)行配置,這種方式為我們在 OSGi 環(huán)境下開發(fā)一個(gè)新的服務(wù)帶來 了很大的便利。 DService 元數(shù)據(jù)的根元素。一個(gè) XML 元數(shù)據(jù)文件只有一個(gè) DService 根節(jié)點(diǎn) component DService 節(jié)點(diǎn)的下級節(jié)點(diǎn),通過上文介紹,我們可以知道,一個(gè)構(gòu)件對應(yīng)于一個(gè)普通的 java 類, 以下將對構(gòu)件所包含的屬性進(jìn)行介紹。 定
52、義的構(gòu)件為: . 對應(yīng)得構(gòu)件實(shí)現(xiàn)類如下: public class BorrowImpl implements Borrow, BorrowMoneyBuy private int m_price; public static BorrowImpl getBorrowImpl(BundleContext bc) BorrowImpl temp = new BorrowImpl(); return temp; public void setPrice(int n) this.m_price = n; 附件七 METADATA.XML 核高基 6-1 項(xiàng)目 使用手冊 40 . component
53、節(jié)點(diǎn)信息的詳細(xì)描述列表如下: 屬性名是否必需默認(rèn)值說明 classnameyes包括包名在內(nèi)的構(gòu)件的實(shí)現(xiàn)類完整類名。 namenoclassname 對應(yīng) 的值 構(gòu)件的唯一名稱。定義構(gòu)件實(shí)例時(shí)可以通過名稱聲 明與之匹配,成為該構(gòu)件的實(shí)例。 immediatenofalsetrue:即時(shí)構(gòu)件 false:延遲構(gòu)件 publicnotrue是否將構(gòu)件暴露為服務(wù)。 structurenotrue是否支持構(gòu)件內(nèi)省。 service component 的下級節(jié)點(diǎn),聲明該構(gòu)件所提供的服務(wù)。默認(rèn)將所有實(shí)現(xiàn)的接口都發(fā)布成服務(wù)。在 service 節(jié)點(diǎn)下 定義了下級節(jié)點(diǎn) provide 來提供具體的服務(wù),一個(gè)
54、 service 節(jié)點(diǎn)下可以定義多個(gè) provide 節(jié)點(diǎn); 在 provide 節(jié)點(diǎn)下也可以定義多個(gè)下級節(jié)點(diǎn) property,表示此方面構(gòu)件提供的服務(wù)屬性。以下是 service 方面的示例。 . provide 節(jié)點(diǎn)信息的詳細(xì)描述列表如下: 屬性名是否必須默認(rèn)值說明 nameno該服務(wù)對象的唯一名稱。 interfacesno所有已實(shí)現(xiàn)的 接口 需要暴露的服務(wù)接口列表,多個(gè)接口用“,”逗號 分隔,默認(rèn)將構(gòu)件實(shí)現(xiàn)類的所有接口都發(fā)布成為服 務(wù)。 strategynoservice服務(wù)對象創(chuàng)建策略, 取值可以是: singletonserviceinstance。 rankingno0當(dāng)前服務(wù)
55、提供者的優(yōu)先等級。 property 元素詳細(xì)描述如下: 附件七 METADATA.XML 核高基 6-1 項(xiàng)目 使用手冊 41 屬性名是否必須默認(rèn)值屬性說明 field見 1屬性關(guān)聯(lián)的字段,當(dāng)沒有聲明 method 時(shí), DService 框架會自動(dòng)注入新的值。 nameyes屬性名稱。 method見 1屬性關(guān)聯(lián)的字段的 setter 方法名稱,當(dāng)屬性被改變 時(shí),容器調(diào)用該方法。 type見 2java.lang.String屬性類型,只支持包括 String(默認(rèn))在內(nèi)的簡單 類型。 valueno屬性默認(rèn)值。 mandatorynofalse本服務(wù)屬性是強(qiáng)制屬性,當(dāng)該項(xiàng)為 true 時(shí)
56、屬性必須 有值,該項(xiàng)默認(rèn)是 false。 immutablenofalse本服務(wù)屬性是否可變,該項(xiàng)默認(rèn)是 false。 說明: 1.當(dāng)沒有聲明 field 屬性,但是聲明了該方 method 屬性時(shí),框架調(diào)用對應(yīng)的方法進(jìn)行注值, 當(dāng)僅聲明了 field 屬性,則由容器進(jìn)行注入。這 2 個(gè)屬性不能同時(shí)聲明。 2.當(dāng)聲明了 field 時(shí),不需要聲明該屬性,默認(rèn)使用 field 對應(yīng)字段的類型。當(dāng)沒有聲明 field 時(shí),該屬性需要聲明。 properties component 的下級節(jié)點(diǎn),聲明該構(gòu)件的屬性。在此節(jié)點(diǎn)中可以定義多個(gè)屬性節(jié)點(diǎn) property,定 義的這些屬性可以在多個(gè)地方引用,包
57、括 service 和 instance 等方面。在 service 方面使用屬性,則 在此構(gòu)件發(fā)布服務(wù)的同時(shí)這些屬性也發(fā)布成服務(wù)屬性;在 instance 方面使用屬性,則這些屬性會覆 蓋 service 方面或 properties 方面所定義的屬性。 properties 節(jié)點(diǎn)信息的詳細(xì)描述列表如下: 屬性名是否必須默認(rèn)值說明 propagationnofalse傳播屬性,構(gòu)件屬性是否發(fā)布成為服務(wù)屬性。 pidno構(gòu)件成為受管服務(wù)后的唯一標(biāo)識符,用來通過 Configuration Admin 重新配置構(gòu)件的屬性。 updatedno構(gòu)件實(shí)現(xiàn)類中一個(gè)具體的方法名稱。 property 元
58、素詳細(xì)描述如下: 屬性名是否必 須 默認(rèn)值屬性說明 field見 1屬性關(guān)聯(lián)的字段,當(dāng)沒有聲明 method 時(shí), DService 框架會自動(dòng)注入新的值。 nameyes屬性名稱。 method見 1屬性關(guān)聯(lián)的字段的 setter 方法名稱,當(dāng)屬性被改變 時(shí),容器調(diào)用該方法。 附件七 METADATA.XML 核高基 6-1 項(xiàng)目 使用手冊 42 type見 2java.lang.String屬性類型,只支持包括 String(默認(rèn))在內(nèi)的簡單 類型。 valueno屬性默認(rèn)值。 mandatorynofalse本服務(wù)屬性是強(qiáng)制屬性,當(dāng)該項(xiàng)為 true 時(shí)屬性必須 有值,該項(xiàng)默認(rèn)是 fals
59、e。 immutablenofalse 本服務(wù)屬性是否可變,該項(xiàng)默認(rèn)是 false。 說明: 3.當(dāng)沒有聲明 field 屬性,但是聲明了該方 method 屬性時(shí),框架調(diào)用對應(yīng)的方法進(jìn)行注值, 當(dāng)僅聲明了 field 屬性,則由容器進(jìn)行注入。這兩個(gè)屬性不能同時(shí)聲明。 4.當(dāng)聲明了 field 時(shí),不需要聲明該屬性,默認(rèn)使用 field 對應(yīng)字段的類型。當(dāng)沒有聲明 field 時(shí),該屬性需要聲明。 reference component 的下級節(jié)點(diǎn),聲明該構(gòu)件所引用的服務(wù)。以下是構(gòu)件實(shí)現(xiàn)類及對應(yīng)的元數(shù)據(jù)文件。 public class ServiceClient implements Runn
60、able private Hello m_hello; private Borrow m_borrow; public void start() . public void stop() . public void bindBorrow(Borrow o) this.m_borrow = o; public void unBindBorrow() this.m_borrow = null; 元數(shù)據(jù)文件內(nèi)容如下: =1)“ / 附件七 METADATA.XML 核高基 6-1 項(xiàng)目 使用手冊 43 reference 元素用來聲明引用服務(wù),是 component 的下級元素。詳細(xì)描述列表如下:
61、屬性名是否必須默認(rèn)值說明 idno當(dāng)前構(gòu)件服務(wù)引用元素的唯一標(biāo)識。 field見 1聲明構(gòu)件實(shí)現(xiàn)類中需要引用服務(wù)的字段。該字段會 被容器注入實(shí)際服務(wù)對象。 filterno指定 LDAP 過濾器用來過濾服務(wù)提供者。 bind見 1指定服務(wù)綁定的方法,值為構(gòu)建實(shí)現(xiàn)類中的方法名 稱,當(dāng)服務(wù)對象可用時(shí)被容器調(diào)用。 unbind見 1指定取消服務(wù)綁定的方法,值為構(gòu)建實(shí)現(xiàn)類中的方 法名稱,當(dāng)服務(wù)對象變?yōu)椴豢捎脮r(shí)被調(diào)用。 interfacesyes接口指當(dāng)前引用服務(wù)的接口類型。 cardinalityyes11 01 Optional and unary. 11 Mandatory and unary (
62、Default) . (0,1 0n Optional and multiple. 0, ) 1n Mandatory and multiple. (0, ) policynostatic引用服務(wù)的綁定規(guī)則,支持三種規(guī)則, staticdynamic dynamic-priority。 comparatorno該項(xiàng)可以指定一個(gè)比較器,值為位于 bundle 中的 比較器完整類名。 說明:1. 服務(wù)對象的獲取定義field時(shí)使用主動(dòng)獲取策略,定義bind和unbind方法則使用事件驅(qū)動(dòng) 策略,當(dāng)二者同時(shí)定義則事件驅(qū)動(dòng)策略優(yōu)先。 lifecyle component 的下級節(jié)點(diǎn),描述該構(gòu)件狀態(tài)改變
63、時(shí)回調(diào)的方法,控制該構(gòu)件的啟動(dòng)與停止?fàn)顟B(tài)。 使用 lifecycle 元素聲明構(gòu)件生命期控制方法,是 component 的下級節(jié)點(diǎn),描述該構(gòu)件狀態(tài)改變 時(shí)回調(diào)的方法。lifecycle 元素詳細(xì)描述如下: 屬性名是否必須默認(rèn)值說明 validno當(dāng)構(gòu)件的狀態(tài)變?yōu)?valid 的時(shí)候,回調(diào)該項(xiàng)定義的 方法。該方法必須是在構(gòu)件實(shí)現(xiàn)類中定義的方法。 invalidno當(dāng)構(gòu)件的狀態(tài)變?yōu)?invalid 的時(shí)候,回調(diào)該項(xiàng)定義 的方法。該方法必須是在構(gòu)件實(shí)現(xiàn)類中定義的方法。 示例: 附件七 METADATA.XML 核高基 6-1 項(xiàng)目 使用手冊 44 advisor component 的下級節(jié)點(diǎn),聲
64、明通知器,在此節(jié)點(diǎn)下可以定義多個(gè)切入點(diǎn) pointcut 和多個(gè)通知 advice,而且在通知 advice 節(jié)點(diǎn)下可以定義屬性節(jié)點(diǎn) property,該屬性可以賦值給通知,但通知要 能夠接收屬性的話,必須實(shí)現(xiàn) ConfigurableAdvice 接口。 示例: 構(gòu)件實(shí)現(xiàn)類 public class AopComponent public void start() System.out.println(“AopComponent has been started.“); public void stop() System.out.println(“AopComponent has been
65、stoped“); 通知類 public class HelloAdvice implements MethodInterceptor,ConfigurableAdvice private String level = “info“; public void onEntry(Object pojo, Method method, Object args) System.out.println(level + “ Entry pojo: “ + pojo.getClass() + “ method: “ + method.toString(); public void onError(Object pojo, Method method, Throwable throwable) System.out.println(level
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第七章-透射電子顯微鏡
- 群落的結(jié)構(gòu)(課件)
- 焊接基礎(chǔ)知識
- 水文地質(zhì)學(xué)課件
- 某公司員工工傷安全管理規(guī)定
- 消防培訓(xùn)課件:安全檢修(要點(diǎn))
- 某公司安全生產(chǎn)考核與獎(jiǎng)懲辦法范文
- 安全作業(yè)活動(dòng)安全排查表
- 某公司危險(xiǎn)源安全辨識、分類和風(fēng)險(xiǎn)評價(jià)、分級辦法
- 某公司消防安全常識培訓(xùn)資料
- 安全培訓(xùn)資料:危險(xiǎn)化學(xué)品的類別
- 中小學(xué)寒假學(xué)習(xí)計(jì)劃快樂度寒假充實(shí)促成長
- 紅色插畫風(fēng)輸血相關(guān)知識培訓(xùn)臨床輸血流程常見輸血不良反應(yīng)
- 14.應(yīng)急救援隊(duì)伍訓(xùn)練記錄
- 某公司各部門及人員安全生產(chǎn)責(zé)任制