OSGI】的更多相关文章

这是大约在3-4年前完成的一个C#实现的OSGi框架,实现的过程参照了OSGi规范与与一些实现思路(感谢当时的那些资料与项目),此框架虽然仅在几个小型项目有过实际的应用,但OSGi的规范实现还是相对比较完整的,包涵了一些基本的要素,由于个人的项目重心已经转移,现在打算把它公开出来,供大家参考: OSGi.NET框架是一个参照了OSGi规范的模块化管理框架.框架为应用程序扩展(组件(bundle))提供了一个标准环境.整个框架可以划分为一些层次: 1.运行环境 2.模块(Bundle) 3.生命周…
在这篇文章我分享了如何使用分层与模块化的方法来设计一个分布式服务集群.这个分布式服务集群是基于DynamicProxy.WCF和OSGi.NET插件框架实现的.我将从设计思路.目标和实现三方面来描述. 1 设计思路 首先,我来说明一下设计思路.我们先来看看目前OSGi.NET插件框架的服务.在这里,服务不是远程服务,它是轻量级的服务,由接口和实现类组成,如下图所示.服务契约插件定义了服务接口,服务实现插件向服务总线注册服务,服务调用插件利用服务契约(接口)从服务总线获取实现的服务并调用,服务实现…
定义 OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统. 这个框架实现了一个优雅.完整和动态地组价模型.应用程序(称为bundle)无序重新引导可以被远程安装.启动.升级和卸载. OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能. 为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方. OSGi联盟已经开发了例如像HTTP服务器.配置.日志.安全.用户管理.XML等很多公…
上周五部门开会讨论新一代产品(基于.net Winform)的设计规范,从设计规范慢慢讨论到体系结构等架构存在的问题,诸如菜单.工具条.状态条.界面布局等不能实现配置化和自动化,子系统之间拥有强依赖,甚至产生强依赖等等,最后我提出通过OSGi 框架来解决界面和模块之间的问题,并立下军令状一周内把核心框架Beta搭建完毕,第二周进行一次培训. 基于项目的特点,结合贞宝兄的OSGi.Net 和Mono.Addins 进行了重新诠释,在两天半的时间里通过Mono.Addins  和NLite 的依赖注…
前言 OSGi是目前动态模块系统的事实上的工业标准,它适用于任何需要模块化.面向服务.面向组件的应用程序.Eclipse如此庞大和复杂的插件体系,就是基于OSGi.Liferay也是基于OSGi.OSGi是模块化设计的一种标准,适用于大中型项目.在一些小型项目中,开发者也可以自己设计私有的classLoader机制来实现插件开发环境,比如openfire OSGi是在Java平台上开发模块化应用程序的一种方式.它允许你构建模块(称之为bundle),它们彼此之间是隔离的,具备明确的和可管理的依赖…
本文介绍开源的协议. LGPL 是 GNU Lesser General Public License (GNU 宽通用公共许可证)的缩写形式,旧称 GNU Library General Public License (GNU 库通用公共许可证),译为:更加宽松的通用公共许可证. 例如mq的5.4版本没有解决Investigate and resolve LGPL dependency via camel-web,所以被撤销. 资料:http://www.oschina.net/questio…
一.环境 eclipse版本:eclipse-luna 4.4 jre版本:1.8 二.Equinox OSGi应用嵌入Jersey框架搭建REST服务 1.新建插件工程HelloWebOSGI a. b. c. d.在新建的工程中新建文件夹lib,其中放入附件中的jar包(见文末),全部添加到工程Build Path中. 2.配置运行环境 a.配置引入包.依赖插件 b.选择Run->Run Configuration,new一个环境 保留图中TargetPlatform中的16个Bundle.…
OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文介绍模块层的一些基础知识,以及OSGi联盟在设计模块层时所做的一些考虑.OSGi标准走到今天,并不是凭空想出来的,它的产生恰恰是为了弥补之前一些技术的缺陷. 模块化其实就是计算机科学中常见的一个概念: “将一个大型系统分解为多个较小的互相协作的逻辑单元,通过强制设定模块之间的逻辑边界来改善系统的维护…
OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或者两者的结合),并且给了应用本身很大的动态性. 这一章里,我们介绍生命周期层的基本特性和如何有效的使用这些特性.当然按照惯例,我们依然会先讲清楚什么是生命周期管理以及OSGi需要生命周期管理的原因,然后再讲解生命周期层的一些基本内容. 1 什么是生命周期管理 一般来说,程序(或者程序的一部分)都一定…
Bundle-Classpath可以实现内嵌jar. 一个Bundle的Activator不需要进行Export 一个Package中的类被两个ClassLoader加载,包中的Private class对于两个ClassLoader之间是相互不可见的. Manifest语法: name: value,我们称之为一个条目,Manifest文件有不受限制的条目个数,其中name是不区分大小写,可以包含字母数字,下划线,中划线,Value可以包含除子\r, \n之后的所有字符,name和value之…
看了http://developer.51cto.com/art/200909/154863.htm 真心感到,最强大最有组织的技术网站还是 51cto,牛人应该也是最多的. 以前逛51cto的比较少,罪过.... 吐槽: 参照http://developer.51cto.com/art/200909/154757.htm来搭建基于osgi的spring dm环境, 不过实在是搞不定,费心费力,几个月过去了的今天,终于搞定了—— 真tm坑爹,原来里面的spring dm版本是1.0.2 而这个版…
基础的API BundleActivator  BundleContext ServiceReference HelloServiceFactory ServiceTracker osgi 疑惑: Import-Package 最最基础的bundle中包含哪些 package? 很多, org.osgi.framework 是其中一个,  org.osgi.framework.BundleActivator 则是位于其下. 为什么只导入package ‘org.osgi.framework ’…
Helloworld入门 准备: eclipse 3.4 需要jar,—— eclipse 自带的,plugin下面有很多,抛开里面的jar,很多都是当前项目不需要的,如果不适用eclipse而是直接在jre上运行的话,估计只需要org.eclipse.osgi_3.2.0.v20060601.jar 就ok了吧 通过eclipse想到创建最简单的项目: 新建plugin项目,输入项目名字AAA(默认情况,向导会以这个为包名等等)——Target Platform一定要选择 an osgi fr…
hook开发是Liferay客制扩展的一种方式,比插件灵活,即可以扩展liferay门户,也能对原有特性进行更改,Liferay有许多内置的服务,比如用hook甚至可以覆盖Liferay服务. 可作为系统服务挂钩(Liferay Service Hook),还有其他类型的hook... Liferay6.2 时的hook开发比较有限,而在Liferay7则大为不同,OSGi services的彻底改进至Liferay的底层模型框架,使得Liferay可以支持更多的定制扩展!OSGi plugin…
当你在开发的插件直接运行的时候,看起来正常的.但导出放到eclipse时候,又发觉不对劲,插件运行有问题.这个时候需要去OSGi的控制台调试插件,这一篇文章将讲述怎么简单调试eclipse插件(插件已导出). 1.将被放置插件的eclipse的eclipse.exe发送到桌面快捷方式 PS:我是在window系统上开发插件的.   2.在目标添加 -console (我试过命令行启动,但并没有效果)     3.双击打开快捷方式,然后你会看到一个日志输出窗口   4.在窗口输入 ss,可以看到e…
OSGI框架为Java定义了一个动态模块化系统,它使你可以更好地控制代码结构,动态管理代码的生命周期,并且提供了代码写作的松耦合方式:更值得称道的是,它的规范文档描述详尽.--<OSGI实战> OSGI分层架构 服务层 关注于模块,特别是模块内的组件间的交互和通信. 生命周期层 关注于提供执行时模块管理和对底层OSGI框架的访问. 模块层 关注于打包和共享代码 bundle:OSGI对其模块化概念具体实现的定义,以jar文件形式包含代码.资源.元数据. bundle和普通jar的主要区别在于元…
关于osgi.net ,想必大家也听说过,以下是自己在学习osgi.net 过程中整理出来的内容,供大家学习参与使用. 1.  UIOSP 开放工厂框架架构 开放工厂所有插件基于OSGi.NET面向服务插件框架构建.该框架是国际上第一个完整迁移了OSGi R4规范的OSGi.NET框架,提供了动态模块化.面向服务和模块扩展三大功能,支持WinForm桌面应用.WPF桌面应用.ASP.NET Web应用.ASP.NET MVC应用.Silverlight RIA应用.手机应用等任意.NET应用环境…
JPA Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JNDI Java Naming and Directory Interface,Java命名和目录接口,是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务…
OSGi——面向服务架构规范简述 去年我们组要开发一个新的产品,在讨论产品架构路线的时候,美国的架构师向大家征集了架构设计思想(我推荐了SCSF),有一位工程师向他推荐了OSGi.以前我还没有听过OSGi这玩意,虽然我参加工作后,现学了Java和Flex,但非常菜.在工作之前我用了4年的.NET.接触了OSGi后,发现它是一个面向Java的服务规范,还没有一个像样的面向.NET的框架(有个EgeyeAddIn,据说兼容OSGi,我看了源代码了,觉得它离OSGi较远http://www.codep…
Bundle可以被动态地安装.启动.停止和卸载.Bundle是服务(Service)和组件(Component)的载体.在OSGi中,每个Bundle都有自己独立于其他Bundle的ClassLoader,正因为这样,各个Bundle内部的类是隔离的 Bundle之间的交互方式:1.通过Package的Export(对外暴露自己的一个或多个package)和Import(导入别人的一个或多个package)来进行.2.通过Service的方式进行.一个Bundle作为Service提供方,对外提…
使用osgi开发http类的Service,在启动时默认端口是80.但有可能这个端口已经被本机上的其他程序占用.那么解决问题的方法有两种:1)关闭或修改占用程序的端口: 2)修改osgi启动时的端口. 修改osgi启动时的端口号也很简单,在你的run configurations 中的参数列表中中的vm参数中进行添加即可,具体如下图:…
最近在学习osgi,在练习HttpService的过程中,一直出现“A null service reference is not allowed”这样的报错,代码本身没有问题,在网上也搜了不少地方,在<深入理解OSGi>.<osgi原理与最佳实践>这两本书中也没有找到具体的解决方法.万般无奈,只好靠自己了,经过多次尝试,一次无意间配置osgi run Configuration时选择了下面的这些bundle,再次启动后竟然不再报错了,苦苦期待的网络访问页面终于出现了,因而特将对应…
经常听到.见到OSGi这个名字.那么就单开一篇文章记录一下对OSGi的学习吧. 主要是做一些概念上面的学习.暂时不打算深入实践. 主要参考:http://www.osgi.com.cn/article/7289520 这篇文章吧.…
一.OSGi的核心组件Bundle,与java中jar包的差别就是元数据配置:      常用的Bundle元数据定义:     a) Bundle-Activator:定义Activator的实现全限定类名称,此类必须实现BundleActivator接口,并实现start和stop方法.当Bundle被OSGi容器启动或停止时就会去调用start和stop方法.Bundle-Activator并非是必须的,只有在需要初始化或是销毁资源时才有用,并且不推荐在start方法中进行复杂的处理,以免…
OSGi 的由来 随着科技和需求的发展和变化,现在的软件变得越来越庞大.这样,随之而来的最大挑战就是软件在设计上的越来越复杂和维护上的越来越困难.为了解决这个问题,软件架构师将软件切分成比较小的并且易于理解的多个模块.那么软件模块化会给我们带来什么样的好处呢? 拆分人力:将软件模块化后,我们就可以分配独立的团队去处理独立的模块,从而将人力拆分开来.这样既便于管理,又会降低整个软件的设计的复杂性.因为每个独立的团队可以专心去设计和实现其模块,而不用通盘考虑整个软件的复杂性. 抽象化:将软件模块化后…
转载出处:http://www.cnblogs.com/liuzhuo. 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务平台.框架提供的主要功能是对应用和组件的生命周期管理,系统可以在无需重启的情况下,远程操纵组件的安装.启动.停止. OSGi框架不仅用于Eclipse,从移动终端到车载系统,各个领域都在应用这个技术. 2. OSGi和Eclipse的关系 Eclipse采用OSGi框架来管理插件的安装.开…
在使用OSGI.NET框架来开发插件过程中,有时为了测试一个插件,或运行一个插件,需要启动主个插件,如果没有主窗口程序,那么该 如何启动一个插件,而不是再开发一个主窗口程序(那样是不是太麻烦,仅仅是为了测试或运行一个插件),其实方法很简单.可在没发现之前,我也对些很困惑,对于启动插件也束手无策.解决方案如下: 修改插件的 mainfest.xml 文件 打开想要启动的插件的 mainfest.xml 文件,只需添加如下信息(这仅限于使用了 UIOSP  ) <Extension Point=&quo…
关于osgi.net 的使用网上也有不少的资料,最近在使用osgi.net  开发插件的时候,遇到了这样的bug,造成插件甚至整个项目都无法启动,异常的具体消息如下: Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "UIShell.iOpenWorks.WinForm.Properties.Resources.resources"…
关于osgi.net ,想必大家也听说过,以下是自己在学习osgi.net 过程中整理出来的内容,供大家学习参与使用. 1.  UIOSP 开放工厂框架架构 开放工厂所有插件基于OSGi.NET面向服务插件框架构建.该框架是国际上第一个完整迁移了OSGi R4规范的OSGi.NET框架,提供了动态模块化.面向服务和模块扩展三大功能,支持WinForm桌面应用.WPF桌面应用.ASP.NET Web应用.ASP.NET MVC应用.Silverlight RIA应用.手机应用等任意.NET应用环境…
关于osgi.net ,想必大家也听说过,以下是自己在学习osgi.net 过程中整理出来的内容,供大家学习参与使用. 1.  OSGI.NET 与UIOSP OSGi是Open Service Gateway Initiative的缩写,Wiki对其的定义为:一方面它指OSGi Alliance组织,它是由IBM.Oracle.BEA.SAP等国际IT巨头组成的OSGi联盟组:另一方面指该组织制定的一个基于Java语言的服务规范——OSGi服务平台(Service Platform).OSGi…