某软件项目开发手册.doc

上传人:夺命阿水 文档编号:96840 上传时间:2025-07-10 格式:DOC 页数:52 大小:608.18KB
下载 相关 举报
某软件项目开发手册.doc_第1页
第1页 / 共52页
某软件项目开发手册.doc_第2页
第2页 / 共52页
某软件项目开发手册.doc_第3页
第3页 / 共52页
某软件项目开发手册.doc_第4页
第4页 / 共52页
某软件项目开发手册.doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、文件编号:P01-01分 册 号:1/1页 码:52密 级:CInforGuard项目开发手册中创软件商用中间件股份有限公司2010年05月请不要删除后面的分节符变更记录变更版本日期图表、表格、段落号A/M/D原因与修改情况描述修订人审核人1.02010-1-1ALLA创建文档李铭注:A 增加 M 修改 D 删节请不要删除后面的分节符II目录目录第1章 概述11.1. 开发场景11.2. 基本概念1第2章 搭建开发环境22.1. 准备开发工具22.2. 工具安装及环境配置22.2.1. 安装jdk及配置java环境22.2.2. 安装maven及配置仓库32.2.3. Eclipse中安装m2

2、eclipse插件42.2.4. Eclipse中安装RAP开发环境42.2.5. Eclipse中安装国际化编辑插件52.2.6. Eclipse中导入编码样式52.2.7. 设置Eclipse的默认编码5第3章 开发案例73.1. 开发前准备73.2. 组织结构73.2.1. 目录结构73.2.2. 源码组织83.3. 开发流程83.3.1. 建立Eclipse插件工程83.3.2. 添加依赖93.3.3. 添加导出包103.3.4. 开发声明式服务(DService)11第4章 常见问题解答23第5章 参考24附录一 SETTING.XML25附录二 常用动名词33附录三 本地化资源文件

3、的创建方法34附录四 MANIFEST.MF35附录五 POM.XML36附件六OSGI命令说明39附件七 METADATA.XML41请不要删除后面的分节符核高基6-1项目 使用手册47附件七 metadata.xml第1章 概述该文档是为InforGuard UTMP开发人员开发新功能所编写的规范性文档。1.1. 开发场景当UTMP添加新的功能时,开发人员可以根据该文档更快更有效的进行开发。1.2. 基本概念w OSGi:OSGi(JSR 291)也叫Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。OSGi容器已有多家开源实现,比如Knoflerfish、Equinox

4、和Apache的Felix。更多信息可以访问:http:/www.osgi.org/Main/HomePage、w Equinox:Equinox是Eclipse中的项目之一,Equinox是作为OSGI R4 RI而知名的,同时由于Equinox有Eclipse IDE这么个成功案例,反应出了Equinox作为OSGI框架的优势。更多信息可以访问:http:/www.eclipse.org/equinox/、http:/www.riawork.org/。w Bundle:OSGi服务框架定义的模块化单元,称之为一个Bundle。一个Bundle由java的类和其他资源组成,可以为终端用户提供

5、功能。Bundle的描述信息存放在一个manifest文件中,这个文件包含在JAR文件中的META-INF目录下,命名为MANIFEST.MF。通过Bundle的符号名称和版本号可以在框架中惟一的确定一个Bundle。w Eclipse RAP: Eclipse RAP项目的目的是让开发人员能够利用Eclipse开发模型来构建Rich,Ajax-enabled Web应用程序。主要运用著名的Eclipse平台扩展点插件机制和一个包含SWT/JFace API的widget工具包。RAP 项目旨在使开发人员能够使用 Eclipse 开发模型构建富 Internet 应用程序。RAP 允许开发人员

6、使用丰富的 Java 库和 Eclipse API 构建基于浏览器的 Ajax 应用程序。它通过提供 SWT、JFace 和 Eclipse Workbench 的基于 Web 的实现来提供此项功能。 更多RAP信息可访问:http:/www.eclipse.org/rap/。第2章 搭建开发环境2.1. 准备开发工具w JDK 1.5或以上版本,下载地址:ftp:/192.168.51.11/Tools/Program/JDK/jdk-1_5_0_16-windows-i586-p.exe/ w Maven 2.0.9或以上版本,下载地址:ftp:/192.168.51.11/Tools/P

7、rogram/maven/apache-maven-2.2.1-bin.zip w 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/1232.2. 工具安装及环境配置2.2.1. 安装jdk及配置java环境1. 安装Windows操作系统上的JDK安装程序是一个exe可执行程序,直接安装即可,在安装过程中可以选择安装路径以及安装的组件等,如果没有特殊要求

8、选择默认设置即可。程序默认的安装路径在C:Program FilesJava目录下。2. 环境变量设置:配置步骤为:1) 右击“我的电脑”,点击“属性”:选择“高级”选项卡,点击“环境变量”。2) 在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(不分大小写) JAVA_HOME指明JDK安装路径,假设JDK的版本为1.6.0_16,安装路径为默认路径, 则该值应设为C:Program FilesJavajdk1.6.0_16,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行一体化管理平台,eclipse等都需要此变量); PATH使得

9、系统可以在任何路径下识别java命令,设为:%JAVA_HOME%bin; CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar (要加.表示当前路径),%JAVA_HOME%就是引用前面指定的JAVA_HOME。3. 验证安装成功:1) 打开“开始”“运行”cmd java version 屏幕输出java版本信息说明安装成功,否则说明配置错误,需要重新进行配置。2.2.2. 安装maven及配置仓库1. 安装1) 下载并解压至

10、想要安装的目录2) 设置Maven系统环境变量,例如:MAVEN_HOME=E:apache-maven3) 添加%MAVEN_HOME%bin至系统环境变量PATH中。4) 确认Maven的安装:cmd mvn version屏幕输出maven版本说明安装成功。2. 配置本地Repository本地Repository的默认值是$user.home/.m2/repository/。可以在user configuration(即在$MAVEN_HOME/conf/setting.xml)中改变本地Repository的位置。例如本地仓库的位置在硬盘的位置为:E:Repository。在sett

11、ing.xml可以进行如下配置: E:Repository注意:本地Repository 必须是绝对路径。3. 配置代理可以在user configuration(即在$MAVEN_HOME/conf/setting.xml)中配置代理,配置如下: cvicseproxy true http 192.168.2.20 80 localhost releases admin loong2009 snapshots admin loong2009 Trustie Repository1 central Human Readable Name for this Mirror. http:/58.20

12、54.58/content/groups/treleases Trustie Snapshots Repository1 public-snapshots Human Readable Name for this Mirror. http:/58.20.54.58/content/groups/tsnapshots 注:setting.xml配置文件见附件一2.2.3. Eclipse中安装m2eclipse插件在eclipse中选择Help Install New Software .,在弹出的Install对话框的Work with文本框中添加m2eclipse插件的安装地址http:/

13、m2eclipse.sonatype.org/sites/m2e,选择“Maven Integration for Eclipse (Required)”进行安装。安装完成之后需要在eclipse中自行指定在本机中maven的Repository位置。打开window/proferences菜单,点击maven配置项的Installations,去掉默认的launch maven,添加机器上的maven并选择使用,点击maven配置项的user settings,选择$MAVEN_HOME/conf/setting.xml文件,完成配置。2.2.4. Eclipse中安装RAP开发环境w 打开

14、Eclipse,选择Help Install New Software . 菜单。w 在弹出的Install对话框的Work with文本框中输入RAP的安装地址,如1.3版本为:http:/download.eclipse.org/rt/rap/1.3/tooling。w 选择列表中出现的Rich Ajax Platform并点击下一步。w 在详细页面点击下一步。w 在许可证页面选择同意并点击完成按钮。w 安装完成后确认重启Eclipse。w Eclipse重启后会出现欢迎页面,选择Rich Ajax Platform(RAP) 选择Install Target Platform 选择确定按

15、钮。2.2.5. Eclipse中安装国际化编辑插件w 打开Eclipse,选择Help Install New Software . 菜单。w 在弹出的Install对话框的Work with文本框中输入Jinto的安装地址: http:/www.guh-software.de/eclipse/。w 选择列表中出现的OpenSource Tools并点击下一步。w 在详细页面点击下一步。w 在许可证页面选择同意并点击完成按钮。w 安装完成后确认重启Eclipse。2.2.6. Eclipse中导入编码样式w 打开Eclipse,选择Window PreferencesJavaCode Sty

16、leCode Templates菜单。w 点击界面右面的Import按钮,选择IDCcodetemplates.xm文件,点击Apply按钮。w 当新建Java接口/类时,需要选择Generate comments,如下图:2.2.7. 设置Eclipse的默认编码w 打开Eclipse,选择Window PreferencesGeneralWorkspace菜单。w 在Text file encoding中选择Other,并且把编码改成UTF-8。第3章 开发案例3.1. 开发前准备参照第2章搭建好开发环境。3.2. 组织结构3.2.1. 目录结构目录说明Cloud-UI界面原型的WEB工程

17、Cloud-FlexFlex开发工程Cloud -web存放展示层构件工程user-management存放用户管理工程3.2.2. 源码组织本项目主要的包结构如下:com.cvicse.inforguard.utmp.模块名.构件名.分组名3.3. 开发流程3.3.1. 建立Eclipse插件工程启动Eclispe, 从Eclispe的 File菜单创建一个Eclipse插件工程,File New Project Plug-in Development Plug-in Project,输入工程名cloud-userman-impl,选择合适的工程目录,点击next,进入Plug-in Pro

18、ject向导,配置完成后点击Finish,完成建立工作。参考上图设置,点击Finish按钮完成工程创建。注意:(1)由于我们开发的是第一个版本,所以Version先写成0.0.1。(2)需要把”Generate an activator, a Java class that controls the plug-ins life cycle”取消勾选状态。(3)如果开发的是Web插件,需要把”This plug-in will make contributions to the UI”勾选上。3.3.2. 添加依赖 用Plug-in Manifest Edit打开MANIFEST.MF文件,切换

19、到Dependecies视图,如下图。在Required Plug-ins中加入依赖的插件。在Imported Packages中加入依赖的包。3.3.3. 添加导出包用Plug-in Manifest Edit打开MANIFEST.MF文件,切换到Runtime视图,如下图:在Exported Packages中添加要导出的包。 3.3.4. 开发声明式服务(DService)在这里我们将开发一个简单的例子,这个例子包括以下部分:w 发布一个OSGi服务。w 引用一个OSGi服务。w 使用构件实例生命周期控制方法来激活和去活构件实例。为了举例说明DService功能,我们将开发一个简单的程序

20、来展现它。这个例子包括3个Bundle,其一是服务接口(Hello Service),对应POJO project其二是服务实现,作为一个单独的构件位于单独的Bundle中,并且该构件提供OSGi服务(POJO-Impl),对应POJO-Impl project其三是服务使用方,也是作为一个单独的构件位于单独的Bundle中,并且该构件需要使用Hello Service接口的OSGi服务,对应POJO Client project。首先,创建一个hello-api的服务接口工程(创建过程见3.3.1. ),添加一个接口类:com.cvicse.inforguard.utmp.example.h

21、ello.IHello,代码如下:/* * * InforGuard Copyright 2010 CVICSE, Co.ltd . * All rights reserved. * * Package: com.cvicse.inforguard.utmp.example.hello * FileName: IHello.java * */package com.cvicse.inforguard.utmp.example.hello;/* * * 描述: * *     服务接口 * * 创建日期 2010-6-1 * * author li_min

22、g * version 1.0 * */public interface IHello /* * 打招呼 * param name 姓名 * return 打招呼语句 */public String sayHello(String name);使hello-api工程支持Maven,操作如下图:点击“Enable Dependency Managerment”,弹出配置界面,填写如下:填写完后,点击“Finish”,这时候pom.xml文件会报错,你需要把下面的代码加入pom.xml的标签后面:org.codehaus.mojobuild-helper-maven-plugin1.1add-s

23、ourcegenerate-sourcesadd-sourcesrcorg.apache.felixmaven-bundle-plugin2.0.0true$pom.artifactIdcom.cvicse.inforguard.utmp.example.hellopom.xml中各标签的详细说明见附录五。双击MANIFEST.MF,在Runtime中把com.cvicse.inforguard.utmp.example.hello包暴露出来,详见3.3.3. 。接下来只需要在eclipse中右击工程或者pom文件,选择run as maven install即完成工程的构建工作。当maven

24、报告INFO BUILD SUCCESSFUL则Hello Service服务构件的jar包已经安装到maven的本地库中,同时生成一个副本位于工程根目录的target下。第二步创建Hello接口的实现工程:hello-impl,双击MANIFEST.MF,在Dependencies中添加hello-api插件的依赖,详见3.3.2. 。添加一个IHello接口的实现类:com.cvicse.inforguard.utmp.example.hello.impl. HelloImpl,代码如下:/* * * InforGuard Copyright 2010 CVICSE, Co.ltd . *

25、 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;/* * * 描述: * *     服务的实现 * * 创建日期 2010-6-1 * * author li_mi

26、ng * version 1.0 * */public class HelloImpl implements IHello /* * 构造函数 */public HelloImpl() System.out.println(HelloImpl starting.);/* (non-Javadoc) * see com.cvicse.inforguard.utmp.example.hello.IHello#sayHello(java.lang.String) */public String sayHello(String name) String result = hello + name;re

27、turn result;为了能够管理这些构件和让DService框架识别我们写的pojo并将之发布为Hello的OSGi服务,我们还必须要定义一个元数据文件,名称为metadata.xml(详见附件七),位于本project的根目录下。其内容如下:Component节点声明了一个构件,classname声明了该构件实现类,immediate声明该构件不是即时构件,也就是说当OSGi框架中发现需要该服务时才实例化该构件。Component下的service节点表示本构件会以构件实例为服务对象对外提供OSGi服务,服务的接口默认暴露出当前构件实现的所有接口,也可以在service节点下加入prov

28、ide节点来决定该暴露的详细的接口,以及对应的服务属性等,详见附件七。Instance节点表示在当前构件在运行时被DService框架初始化完毕之后,根据配置来确定实例化构件的次数,即有多少个Instance就会有多少个构件实例(注意不是指服务对象)。源代码和元数据定义完成之后,还需要使hello-impl工程支持Maven,并修改pom.xml:org.codehaus.mojobuild-helper-maven-plugin1.1add-sourcegenerate-sourcesadd-sourcesrcorg.apache.felixmaven-bundle-plugin2.0.0t

29、rue$pom.artifactIdcom.cvicse.inforguard.utmp.example.hello.implmetadata.xmlorg.trustie.loong.modules.loong-dserviceloong-dservice-plugin1.0.0dservice-bundlecom.cvicse.inforguard.utmp.examplehello-api0.0.1bundle本project所有工作做完之后,同样只需要在eclipse中右击project,Run as Maven install,maven会为我们将project打包成为DServic

30、e Bundle安装到maven本地库中,并在target目录下生成同样一份jar文件。最后建立一个服务消费工程hello-client,双击MANIFEST.MF,在Dependencies中添加com.cvicse.inforguard.utmp.example.hello的依赖,详见3.3.2. 。添加一个服务使用类:com.cvicse.inforguard.utmp.example.hello.client.HelloClient,代码如下:/* * * InforGuard Copyright 2010 CVICSE, Co.ltd . * All rights reserved.

31、 * * Package: com.cvicse.inforguard.utmp.example.hello.client * FileName: HelloClient.java * */package com.cvicse.inforguard.utmp.example.hello.client;import com.cvicse.inforguard.utmp.example.hello.IHello;/* * * 描述:     服务消费类 * 创建日期 2010-6-1 * author li_ming * version 1.0 * */pu

32、blic class HelloClient implements Runnable /* * 两个调用之间的延迟。 */ private static final int DELAY = 5000; /* * Hello 服务。 * 通过容器注入。 * */ private IHello m_hello; / 需要引用的服务。 /* * 结束标志。 */ private boolean m_end = false; /* * 名称属性。 * 通过容器注入。 */ private String m_name; public HelloClient() System.out.println(He

33、lloClient starting.); /* * Run 方法。 * see java.lang.Runnable#run() */ public void run() while (!m_end) try invokeHelloServices(); Thread.sleep(DELAY); catch (InterruptedException ie) /* 将重新检查 */ /* * 调用hello服务。 */ public void invokeHelloServices() for (int i = 0; m_hello != null & i m_hello.length; i

34、) System.out.println(m_helloi.sayHello(m_name); /* * 启动。 */ public void starting() System.out.println(Hello client is starting in mathod starting.); m_end = false; new Thread(this).start(); /* * 停止。 */ public void stopping() System.out.println(Hello client is stopping in mathod stopping.); m_end = true; 该构件将会创建一个线程,循环调用服务对象的sayHello方法。当该构件在DService框架中初始化之后,只要发现

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 软件工程

宁ICP备18001539号-1