OSGI是什么
今天在看公司的文档的时候,发现了好多不懂得名词。特别是对OSGI这个词比较的感兴趣,就到网上去查了一下他的一些资料。以我的技术水平,看了半天愣是没看明白。尽管没有看明白,但还是要写下来,免得下次要找资料的时候还是要到处乱找。OSGI(Open Service Gateway Initiative) 它可以被看做OSGi Alliance组织;也可以认为是该组织制定的一个基于Javaa) 您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;b) 对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;c) OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构个模块负责视图层,另一个模块负责DAO层,第三个模块负责数据访问层,如果我们使用OSGi容器来管理这些模块之间的交叉依赖,我们就可以在不用重启该Web应用的前提下,将DAO层从速度较慢的升级到速度较快的DAO。附:一些OSGI的资料你好,OSGI这是一个OSGI的专题汇总。里面的资料还是很不错的OSGI Alliance这个是OSGI的官方网站。不过是英文的 ^_^这个OSGI在javaEye网站上的专题。很不错,可以去看看
java程序员需要了解OSGi吗
在该框架之上,OSGi联盟定义了很多服务。这些服务通过一个Java接口指定。bundles能够实现这个接口,并在注册服务层注册该服务。服务的客户端在注册库中找到它,或者当它出现或者消失时做出响应。这个同SOA架构使用Web服务进行发布的方式相似。两者主要不同是Web服务总是需要传输层,这个使它比采用直接方法调用的OSGi服务慢几千倍。同时,OSGi组件能够对这些服务的出现和消失做出响应。的信息可以从OSGi服务平台发行版本4手册或者PDF下载中找到。需要注意的是每一种服务都是抽象定义的,与不同计算机服务商的实现相独立。
java开源osgi框架 哪个好
Spring Framework 【Java开源 J2EE框架】
Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了 Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。 Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的 aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。【SpringIDE:Eclipse平台下一个辅助开发插件】.
WebWork 【Java开源 Web框架】
WebWork 是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成 Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用 JSP, Velocity, FreeMarker, JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】
Struts 【Java开源 Web框架】
Struts 是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】
osgi 是什么?
OSGi规范介绍
第一章 引言
OSGi(Open Service Gateway Initiative)最初的目的就是为各种嵌入式设备提供通用的软件运行平台,即可以屏蔽设备操作系统与硬件区别的中间件平台。PC基本上被 Wintel架构垄断,运行在PC上的应用程序完全可以在另一台PC上运行;但对于其他设备来说就不同,它们的硬件平台可能完全不同,其操作系统也是来自不同厂商,所以任何设备上的应用程序都需要定制,于是就产生了对中间件平台的需求。
OSGi并不是专为家庭网络而制定的,除了住宅网关,像车载电脑等其他移动嵌入式设备也都可以通过OSGi接入Internet,获取不同的应用服务。它为服务供应商、软件供应商、网关开发人员以及设备供应商提供了一个开放、通用的架构,使它们能互动地开发、部署和管理服务。其软件环境基于Sun的 JAVA虚拟机,并不涉及具体的连接协议。对于任何新设备,它都能够灵活地将其纳入现有网络。可以使用OSGi的对象包括各种数字和模拟的机顶盒、服务网关、有线电视电缆调制解调器、消费类电子产品、PC、工业计算机、汽车等。
因为OSGi基于JAVA技术,而JAVA最大的好处就是平台无关性。在不同类型的住宅网关设备上都可以实现OSGi软件。而且OSGi规范可以与各种设备访问标准桥接(如图1所示),比如遵循OSGi的系统可以很好地部署和管理Jini服务,它可以提供Jini设备与服务提供商之间的交互。对于像 HAVi、UPnP等基于非JAVA技术的标准和规范,OSGi也可以提供与它们沟通的桥梁。
第二章 OSGi规范介绍
2.1 OSGi规范的体系结构
在OSGi规范中提供了一个参考的体系架构[1],也基本上体现了OSGi的设计初衷。
OSGi的体系架构是基于这样一个模型的:经营者管理着一个潜在的巨大的服务网络平台。OSGi规范假设这个服务平台是完全被这个经营者控制,并且经营者使用该服务平台去运行来自不同服务提供者提供的服务。然而这只是一个场景,还有其他模型,例如PC机的部署,工业应用(如,移动电话基站是一个管理中心完全控制着各个方面),中间件模型等。OSGi最广泛的应用是在网络化的服务。除了参考模型之外,规范之中还提到了其他的一些模型。请参考OSGi 3.0规范[1]。
2.1.1 OSGi参考体系架构的特点
1. 商业驱动:经营者的观点驱动OSGi的体系架构。
2. 完美:体系架构必须是足够完善和详细的,以致允许开发商生产出健壮的产品。
3. 不受限的:由于经营者所操作的服务平台在性能和网络环境的变化是非常大的。
4. 开放:标准不是为一个具体的系统而设计的,OSGi参考体系架构必须考虑和支持许多不同的场景。
2.1.2 OSGi参考体系架构所涉及到实体
1. 服务平台:一个JAVA虚拟机的实例,一个OSGi框架结构,和运行着的服务包的集合。
2. 服务平台服务器(SPS):驻留一个或多个服务平台的硬件。
3. 运营商:掌控许多服务平台的组织。
4. 服务应用:一套软件包,文档和支撑软件所组合起来的应用,这些应用向终端用户提供服务。
5. 服务用户:获取服务应用服务的用户。
6. 服务提供者:开发服务应用并且通过服务部署管理器部署到服务平台上。
7. 服务部署管理器:部署和部分管理一个或多个服务提供者提供的服务应用。
8. 服务运行支持:支撑软件和硬件,它们并不驻留在服务平台服务器上,但是在运行服务应用时需要它们。
9. 服务集成者:负责确保来自不同服务提供者的服务应用的集成。
10. 服务开发者:开发服务应用。
11. 制造商:制造服务平台服务器
12. 拥有者:服务平台服务器拥有者。
13. 收费提供者:接受帐户信息,并且提供统一的帐单给服务消费者。
14. 网络提供者:提供服务平台的网络链接。
15. 证书授权:管理证书的组织,这些证书被用来鉴别系统,个人和组织。
首先是制造商制造服务平台服务器,拥有者从制造商处购买服务平台服务器,网络提供商提供服务平台服务器和互联网的接入。服务平台的运营商使用网路提供者的接入基础件接入服务平台服务器,同时服务平台经营者控制着一个或多个运行在服务平台服务器的服务平台。另一方面,服务平台经营者许可服务部署管理器去部署服务应用到服务平台上。
其次服务开发者开发服务应用,一个服务应用可能包含多个服务包而这些服务包是真正运行在服务平台上的。服务提供者从服务开发者处得到服务应用并且可能会委托服务运行支撑系统去支撑该服务应用在服务平台上的运行。服务集成者将服务提供者获取的服务应用和支持系统集成起来由服务部署管理器部署到服务平台上。
最后服务消费者订阅服务提供者提供的服务。
更有意思的是这里还有一个服务用户实体,从图中可以看出服务消费者可以包含多个服务用户,服务用户是真正接受服务的实体。也就是说服务消费者是一个虚的实体,多个服务用户可以消费同一个服务消费者订阅的服务。这好比不同的人可以通过同一个电话打电话一样。这无疑提高了OSGi规范灵活性。
OSGI 怎么添加额外的jar包
其实这样问题的解决方法有两个:
一个是在你的bundle-classpath里面声明,如果在里面声明,千万别在声明import-package里面出现
另外一个是:
把你依赖的jar转换为OSGI的bundle,这个有专门的工具可以帮你的,google即可。
然后使用import-bundle导入bundle,在import-package导入包!
第二种方法不知道你说的是哪个工具
而第一种办法 我不知道该以怎样的格式书写 manifest.mf 文件
还有就是能麻烦你把一个例子写出吗
比如说 添加WEB-INF/lib/json 下的各种jar包
几种OSGI bundle的打包方法及注意事项
前言:我相信做基于OSGI框架开发的朋友,对于OSGI的基本单元Bundle应该并不陌生,平时的开发中,做得最多事情就是bundle的开发和打包了,打包其实属于蛮重要的一个过程,为什么说他重要呢,其实打包的过程就是一个理清bundle依赖关系的过程,在对OSGI的学习和使用过程中,个人觉得最令人头痛的就是bundle之间的依赖关系,而且我到现在为止还没有找到一种比较好的工具能够很好的管理OSGI环境中的各个bundle的依赖关系。不过现在公司也有开始考虑做一些类似phpadmin,mysqladmin这样的基于web的管理工具来对bundle进行统一管理,在这之前,如何解决依赖关系,如何将bundle正确的打包出来并进行部署成了OSGI开发中的一个主要问题,而这篇文章中,我主要介绍目前我自己用过得几种打包方式,总结下经验,如果大家有更好的方法或者有不清楚的地方也可以提出来一起讨论~ 第一种方法就是直接通过eclipse提供的export功能,来直接导出一个一个插件工程,这个过程,相信大家已经用的很熟悉了,直接eclipse给你的提示一步步来就可以了。 这里我只想稍微提几个注意的问题,首先是在打包的时候注意把必要的资源文件给勾选上,像我有时就忘记勾选上一些OSGI service的配置文件,而导致service不能发布或者获取。其次,检查好你的项目自描述文件MANIFAST.MF里面的OSGI相关的配置信息是否都已经写正确,该export和该import的包是否写对,个人觉得OSGI最让人头疼的就是解决bundle之间的依赖关系,有时候OSGI环境一大,依赖关系变得复杂,导出包,引用包常常会容易混淆,所以对OSGI环境中的组件的依赖进行统一管理和限定,可以使bundle的依赖更加清晰,环境也易于管理,降低OSGI开发复杂度。最后,有时候在导出包的时候会碰到一些问题,比如bundle之间循环调用,多半还是由于Bundle之间的依赖发生了冲突的关系,检查一下是否多个bundle是否导出了相同包,bundle的引入包是否正确等等。 第二种方法则是利用apache为maven2.0提供的一个专门来打OSGI包的felix(http://felix.apache.org/site/maven-osgi-plugin.html)插件来利用maven进行OSGI bundle的打包工作,felix这个插件在maven中的使用还是比较容易的。官方网站(http://cwiki.apache.org/FELIX/osgi-plugin-for-maven-2.html)上给出了一个比较详尽的使用说明,这里我大致说明一下,只需要在项目的pom文件中配置一个plugin就ok了,最简单的配置如下: xml 代码 org.apache.felix.pluginsgroupId> maven-osgi-pluginartifactId> trueextensions> 0.3.0version> resources/manifest.mfmanifestFile> configuration> plugin> plugins> 当然,这种配置就是告诉maven在对你的项目进行打包的时候直接使用resources/manifest.mf文件进行打包了,除此之外,如果你并不想一开始就指定一个MANIFAST.MF文件,而是将这个工作在打包过程交给felix去完成的话,那么你可以为MANIFAST.MF文件配置一些必要的属性,然后felix会根据这个属性来生成一个MANIFAST.MF一起打包到项目中,如: xml 代码 org.apache.felix.pluginsgroupId> maven-osgi-pluginartifactId> trueextensions> 0.3.0version> My OSGi ApplicationbundleName> An example bundle applicationbundleDescription> org.safehaus.bundle.ActivatorbundleActivator> org.osgi.service.logimportPackage> SafehausbundleVendor> osgiManifest> configuration> plugin> plugins> 显然,从标签开始,你就是在手动的写一个MANIFAST.MF文件的相关OSGI配置信息了,此外你还可以加上一些打包配置来将指定的资源文件进行打包,如: 在标签以内加入如下的设定 -target/classes/META-INF/details.bnd target/classes 第一种是告诉maven将一个指定文件打包 第二种是设定编译后类文件的存放位置 这里提供一个实际运用的简要配置模板实例,大家可以稍作修改就可以直接使用了: xml 代码 org.apache.felixgroupId> maven-bundle-pluginartifactId> trueextensions> ${project.version} Bundle-Version> $(replace;${project.artifactId};-;_);singleton:=true Bundle-SymbolicName> target/classes_classpath> com.yourcompany.artifactId.*;version="${project.version}" Export-Package> org.springframework.test;resolution:=optional,* Import-Package> *DynamicImport-Package> -target/classes/META-INF/details.bnd _include> Include-Resource> instructions> configuration> plugin> 以上仅是我在实际项目中打包时候的设置过得一个样例,仅供大家参考,大家可以根据实际项目信息来自行设置自己的项目描述。具体的其他OSGI相关配置所应对应设定什么样的标签的内容,请参考apache官网(http://cwiki.apache.org/FELIX/osgi-plugin-for-maven-2.html)提供的参考。 配置完毕后,在当前项目目录下,运行maven的package命令,就能得到一个由你自己自配置的一个OSGI bundle了。 第三种方式: 利用OPS4J组织提供的一个叫Pax的工具来进行OSGI bunder的构建. 这里需要说的就是,我什么要用PAX来构建一个OSGI工程呢,eclipse不是已经有很好的OSGI开发支持了么,这里要说的就是,PAX构建的OSGI工程并不是单单某个OSGI bundle的开发,而是,PAX会主动的为你创建一个基本的OSGI环境,这个环境包括一些OSGI的基础包,你可以通过PAX的命令来启动这个OSGI环境,同时PAX也会将其管理的一些Bundle进行打包实时发布到这个环境中,这样不但可以按需的打包bundle,还可以迅速的构建一个OSGI环境来进行调试了。这里我简要的说一下PAX的使用方法,PAX是一个专门用来构建和管理OSGI 环境的一个工具,从官网的介绍我们可以看到,他主要提供pax-create-project pax-add-repository pax-create-bundle pax-import-bundle pax-embed-jar pax-wrap-jar pax-move-bundle pax-remove-bundle 等几大脚本命令来,完成一些儿OSGI环境的构建工作。这里我只简要介绍一下我平时几条最常用的命令,通过这些命令的介绍来大概的给大家讲解一下pax的使用方式。首先从官方down到pax的最新包 Down好后,进行解压,解压完毕后,为了在命令行中使用,你需要将其中的bin目录设置到环境变量PATH中,设置完毕后你就可以到你希望创建项目的目录,利用PAX提供的第一条命令pax-create-project来创建一个OSGI工程。创建好这个工程后,我们就可以利用maven的命令来启动这个OSGI的环境工程,pax会为帮我们构建一个基础OSGI环境,以及将test工程中的bundle工程打成bundle部署到这个环境中去,当然我们现在还为在这个工程中创建任何bundle工程,所以,我们启动的只是一个最小的OSGI环境。 接下来我们在这个PAX的工程中来创建我们bundle工程,pax提供四种命令来创建bundle的打包工程pax-create-bundle pax-import-bundle pax-embed-jar pax-wrap-jar pax-create-bundle是完全用pax创建一个符合OSGI规范bundle项目,最后在执行mvn clean install pax:provision命令时,pax会把这个工程打成一个bundle然后部署到它的OSGI环境中去。 pax-import-bundle 则是直接导入一个符合OSGI规范的bundle,这样在启动OSGI环境的时候pax会去指定group(-g),指定的artifactId(-a)和指定的version(-v)的repository下去搜索指定的OSGI bundle并将其导入到环境中。 pax-wrap-jar 通过该命令则可以利用pax将一个jar包打包成一个符合OSGI规范的bundle,pax能够对这个jar包进行分析,找出其中的依赖关系,并生成相关的MANIFAST.MF文件。再吧这个bundle部署到之前的OSGI环境中去。 在项目中我最常用的就是以上三条,其余的命令,以及这些命令的具体使用方法大家可以参考官方网站给出的示例。 接下来,我就利用pax-create-bundle命令来创建一个bundle工程,来给大家演示一下。 先选择到一个需要创建工程的目录下 看看一个test工程生成了,可以看到pax实际上给我们生成了一些初始的pom,大家可以打开看看 接下来我们马上来跑下这个工程。看看pax会给我们带来什么效果 先进入到text目录,大家可以打开pax生成的pom.xml看看,实际上pax是把自己作为了一个maven的插件来供maven调用,这里我们用maven来运行这个工程,命令是mvn clean install pax:provision 可以看到pax为我们启动了一个OSGI运行环境,我们用ss命令来查看但前环境中的bundle信息 呵呵,果然是一个最小的OSGI环境。 接下来我输入命令来创建一个bundle工程: pax-create-bundle -g com.zhoufu.demo -a create_bundle_demo -v 1.0,接下来看看pax会为我们产生什么可以看到在test环境工程下,pax为我们创建了一个符合OSGI规范的create_bundle_demo工程 接下来我们就可以直接对这个工程进行maven(mvn eclipse:eclipse)使其成为一个eclipse可以识别的工程,来用eclipse对其进行开发了。 当开发完毕后,我们就可以直接利用之前的pax:provision命令来启动这个环境的工程,pax会依次由test目录下的pom来检索相应的bundle工程,按照各个bundle中pom的配置对其进行OSGI的bundle打包工作,打成bundle后再将其部署到启动的OSGI环境中去。 现在,我们看看我们刚才生成的那个工程里的POM文件 xml 代码 xml version='1.0' encoding='UTF-8' ?> ../poms/compiled/relativePath> org.ops4j.example.test.buildgroupId> compile-bundleartifactId> 0.1.0-SNAPSHOTversion> parent> com.zhoufu.demobundle.package> properties> 4.0.0modelVersion> org.ops4j.example.test.bundlesgroupId> create_bundle_demoartifactId> 1.0version> ${project.artifactId} [${bundle.package}]name> bundlepackaging> maven-dependency-pluginartifactId> plugin> org.ops4j.pax.mavengroupId> maven-bundle-pluginartifactId> plugin> org.ops4j.pax.constructgroupId> maven-pax-pluginartifactId> plugin> plugins> build> project>非常好,当然,这只是个初始的POM,随着bundle的开发,这里面肯定有一些关于bundle的依赖配置,需要增加到MANIFAST.MF文件中去,那么怎么告诉pax打包的时候生成什么样的MANIFAST.MF文件呢,其实也就是在org.ops4j.pax.maven这个plugin的配置段里进行配置好了。如下,我从项目中,提取了一段配置的模板,大家可以参考参考
如何把普通jar包转成osgi 包
打开eclipse,点新建-》其他,选择如图所示
选择你要转换的jar包。
填入项目名,目标平台选择,OSGi 框架-》标准。
最重要的一步来了,查看源jar包的MANIFEST.MF配置,查看是否Import-Package这一项。如果有这一项,把这一项全部复制到的所转换的bundle的MANIFEST.MF配置文件里。
选中工程,右键-》导出,选择你要导出的bundle和生成bundle的目录。
怎么将java project工程转为ogsi
1) 在Eclipse中,点击“File->New->Project”菜单,您将会看到新项目创建对话框;
2) 在新项目对话框中,选择“Plug-inProject(插件项目)”并点击“Next(下一步)”按钮,您将看到插件项目对话框;
3) 在插件项目对话框中,请键入下列值:
Project Name(项目名称):com.javaworld.sample.HelloWorld
Target Platform(目标平台):an OSGiFramework->Standard (OSGi框架->标准)
4) 对其它的要求输入值采用缺省值,并点击“Next(下一步)”按钮,您将会看到插件上下文对话框;
5) 在插件上下文对话框中,请选择缺省值并点击“Next(下一步)”按钮;
6) 在模板对话框中,请选择“Hello OSGiBundle(你好,OSGi包)”模板,然后点击“Finish(完成)”按钮完成该项目。
Eclipse将花几秒钟生成HelloWorld Bundle模板代码,它将新建两个文件:Activator.java和MANIFEST.MF,下面,让我们看看这两个文件:
src: Activator.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.shane.demo;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
System.out.println("Hello World!!");
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
System.out.println("Goodbye World!!");
}
}
如果您想让您开发的Bundle能在其启动或关闭时通知自身,那么您应新建一个类,让它实现BundleActivator接口,同时,您还需要遵行下列规则:
这个实现了BundleActivator接口的类必须有一个public的、不带参数的构造函数,这样,OSGi框架就能调用该类的Class.newInstance()方法创建这个BundleActivator对象;
容器将调用Activator类的start()方法来启动Bundle,因此,我们可以在start()方法中执行一些资源初始化的操作,例如,我们可以在该方法中获取数据库连接,以备后用。这个start()方法的唯一参数是一个BundleObject对象,Bundles可以通过该对象和OSGi框架通讯,我们可以从该对象中获取OSGi容器相关的一些信息;如果某个Bundle抛出异常,容器将之置为“stopped(已停止)”状态,此时,这个Bundle就不能对外提供服务。
如果我们要关闭一个Bundle,容器将调用Activator类中的stop()方法。因此,我们可在stop()方法中执行一些资源清理任务,比如释放数据库连接。
一旦Activator类准备就绪,您就可以通过MANIFEST.MF文件把该包的合法名称传给容器。下面,我们就看看这个MANIFEST.MF文件
MANIFEST.MF文件
该文件是Bundle的部署描述文件,其格式和正常JAR文件包中的MANIFEST.MF文件相同,因此它由一系列的属性及这些属性对应的值组成,属性名位于每一行的开头,我们可以称其为属性头。OSGi规范规定,您可以使用属性头向容器描述您的Bundle。您的HelloWorld Bundle的MANIFEST.MF文件看起来应该如清单2所示:
src:MANIFEST.MF
1
2
3
4
5
6
7
8
9
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Demo
Bundle-SymbolicName: com.shane.Demo
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.shane.demo.Activator
Bundle-Vendor: SHANE
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: org.osgi.framework;version="1.3.0"
我们来看看这个文件中使用的属性头:
Bundle-ManifestVersion
该属性头告诉OSGi容器,本Bundle将遵循OSGi规范,数值2表示本Bundle和OSGi规范第4版本兼容;如果该属性的数值为1,那么则表示本包和OSGi版本3或更早版本兼容。
Bundle-Name
该属性头为本Bundle定义了一个简短的、可以阅读的名称;
Bundle-SymbolicName
这个属性头为本Bundle定义了一个唯一的、非本地化的名字;当您需要从别的Bundles中访问某一指定的Bundle时,您就要使用这个名字。
Bundle-Version
该属性头给出了本Bundle的版本号。
Bundle-Activator
该属性头给出了本Bundle中使用的监听器类名字,这个属性值是可选的。监听器将对Activator中的start()和stop()方法监听。在程序清单2中,该属性头的值为com.javaworld.sample.helloworld.Activator。
Bundle-Vendor
如何把普通jar包转成osgi 包
打开eclipse,点新建-》其他,选择如图所示
选择你要转换的jar包。
填入项目名,目标平台选择,OSGi 框架-》标准。
最重要的一步来了,查看源jar包的MANIFEST.MF配置,查看是否Import-Package这一项。如果有这一项,把这一项全部复制到的所转换的bundle的MANIFEST.MF配置文件里。
选中工程,右键-》导出,选择你要导出的bundle和生成bundle的目录。
OSGI 怎么添加额外的jar包
其实这样问题的解决方法有两个:
一个是在你的bundle-classpath里面声明,如果在里面声明,千万别在声明import-package里面出现
另外一个是:
把你依赖的jar转换为OSGI的bundle,这个有专门的工具可以帮你的,google即可。
然后使用import-bundle导入bundle,在import-package导入包!
第二种方法不知道你说的是哪个工具
而第一种办法 我不知道该以怎样的格式书写 manifest.mf 文件
还有就是能麻烦你把一个例子写出吗
比如说 添加WEB-INF/lib/json 下的各种jar包
网络的概念,网络与互联网的区别
计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。\x0d\x0a最庞大的计算机网络就是因特网。它由非常多的计算机网络通过许多路由器互联而成。[1]因此因特网也称为“网络的网络”。\x0d\x0a\x0d\x0a互联网,即广域网、局域网及单机按照一定的通讯协议组成的国际计算机网络。互联网是指将两台计算机或者是两台以上的计算机终端、客户端、服务端通过计算机信息技术的手段互相联系起来的结果,人们可以与远在千里之外的朋友相互发送邮件、共同完成一项工作、共同娱乐。
网络的定义??
网络是由节点和连线构成,表示诸对象及其相互联系。在数学上,网络是一种图,一般认为它专指加权图。网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型。在网络安全管理中小草软件小编在计算机领域中的理解,网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。