- 浏览: 1146809 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
当多个Bundle使用同一接口名注册服务时,服务的获取策略如下:OSGi容器会返回排行最高的服务,即,返回注册时SERVICE_RANKING属性值最大的服务。如果有多个服务的排行值相等,那么OSGi容器将返回PID值最小的那个服务。
如果服务消费者需要对服务进行跟踪,比如服务何时被注册,何时取消注册等,可以使用ServiceTracker类。以下是该类的使用范例源码:
1、接口及其实现类:
- public class HelloServiceImpl implements HelloService {
- public String sayHello(String name) {
- return "Hello " + name;
- }
- }
2、服务跟踪器子类
- /**
- * 服务跟踪器:跟踪注册到HelloService接口下的所有服务
- */
- public class HelloServiceTracker extends ServiceTracker {
- public HelloServiceTracker(BundleContext context){
- super (context, HelloService. class .getName(), null );
- }
- @Override
- public Object addingService(ServiceReference reference) {
- System.out.println("adding service: " + reference.getBundle().getSymbolicName());
- return super .addingService(reference);
- }
- @Override
- public void removedService(ServiceReference reference, Object service) {
- System.out.println("removed service: " + reference.getBundle().getSymbolicName());
- super .removedService(reference, service);
- }
- }
3、Bundle激活器类
- public class Activator implements BundleActivator {
- HelloServiceTracker helloServiceTracker;
- ServiceRegistration serviceRegistration;
- public void start(BundleContext context) throws Exception {
- System.out.println("start..." );
- //启动服务跟踪器
- helloServiceTracker = new HelloServiceTracker(context);
- helloServiceTracker.open();
- //注册服务
- serviceRegistration = context.registerService(HelloService.class .getName(), new HelloServiceImpl(), null );
- //获取被跟踪的服务
- HelloService helloService = (HelloService)helloServiceTracker.getService();
- if (helloService!= null ){
- System.out.println(helloService.sayHello("cjm" ));
- }
- }
- public void stop(BundleContext context) throws Exception {
- System.out.println("stop" );
- //关闭服务跟踪器
- helloServiceTracker.close();
- serviceRegistration.unregister();
- }
- }
4、运行结果
osgi>
start...
adding service: p1
Hello cjm
osgi> stop 86
stop
removed service: p1
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1565OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20274.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2483摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1419随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1406随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1630OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12461、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1055不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1226registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1358在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1304osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1163软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3534将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1328Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11531、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1419Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13281、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1206一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1556OSGi Core定义了一个服务层,提供了一个Bundl ... -
OSGI 中嵌入 Http 服务器的运行环境
2012-07-31 13:44 3051Eclipse 4.2 OSGI 依赖的Bundle: or ...
相关推荐
OSGi的`ServiceTracker`类提供了一种方便的方式来跟踪服务的生命周期。开发者可以创建一个`ServiceTracker`实例,指定要跟踪的服务类型。`ServiceTracker`会自动监听服务的添加、修改和删除事件。当服务出现变化时,...
ServiceTracker会自动管理和跟踪服务的生命周期,当服务可用或不可用时,它会触发回调。lookupService则提供了一种简单的按名称查找服务的方法,但不支持服务变化的跟踪。 在RCP(Rich Client Platform)场景中,...
它监听服务的生命周期事件,并根据配置的过滤器自动跟踪和管理服务。当服务可用时,`ServiceTracker`会缓存服务,方便消费者快速访问。 2. **ServiceReference**: 通过`ServiceTracker`或其他方式获取到`Service...
开发人员可以使用服务跟踪器(ServiceTracker)来监控服务的生命周期,避免因服务的动态变化导致的问题。服务跟踪器允许自定义回调,以便在服务添加、更改或移除时执行特定操作。 服务环境中的bundle上下文(Bundle ...
7. **最佳实践**:除了理论知识,本章可能还会分享一些关于如何优化服务跟踪和DS使用,以提高性能和可维护性的最佳实践。 通过学习这些内容,开发者能够更好地理解和掌握OSGi与Equinox的核心特性,从而构建更加灵活...
例如,研究`org.osgi.framework.ServiceRegistration`接口和`org.osgi.util.tracker.ServiceTracker`类的实现,能帮助我们更好地掌握OSGi服务的运作原理。 ## 工具支持 在实际开发中,有一些工具和库能简化OSGi服务...
5. **依赖注入**:了解OSGi中的服务跟踪器(ServiceTracker)和服务监听器(ServiceListener),以及如何利用它们来实现依赖注入,以实现对服务变化的响应。 6. **打包与部署**:学习如何将源代码打包成OSGi bundle...
- **ServiceTrackerActivator.java**:使用 ServiceTracker 跟踪服务。 #### 7. 参考资料 - [OSGi 官方网站](http://www.osgi.org/) - [Knopflerfish 官方网站](http://www.knopflerfish.org/) - [OSGi 入门教程]...
此外,由于Karaf是一个基于OSGi的服务容器,我们可能还需要考虑ServiceTracker或者Declarative Services(DS)来动态跟踪和管理Session共享Filter。ServiceTracker可以帮助我们在运行时自动检测到其他Bundle对...
这通常涉及到使用ServiceTracker或者 declarative services来动态跟踪和获取服务实例。 在实际操作中,开发者会创建一个配置文件(如MANIFEST.MF),在其中定义bundle的元数据,包括导出和导入的包、依赖的服务以及...
`ServiceTracker`或`ServiceReference`可以帮助你跟踪服务的状态,并获取服务实例。 4. **生命周期管理**:在OSGi中,bundle有自己的生命周期,包括启动、运行、停止和卸载等状态。你需要处理这些状态的变化,比如...
- **ServiceTracker**: 用于跟踪服务的注册和注销事件。 #### 三、关键概念解析 为了更好地理解OSGi R4的核心功能,以下是一些关键概念的深入解析: ##### 1. 模块化 - **模块独立性**: OSGi通过严格的模块边界...
2. **服务注册与查找**:学习如何使用ServiceTracker和服务监听器来查找和跟踪服务,以及如何使用ServiceRegistration来注册服务。 3. **包导入与导出**:了解Import-Package和Export-Package头,它们定义了bundle...
例如,我们可以使用`ServiceRegistry`来注册服务,并使用`ServiceTracker`来跟踪观察者服务的生命周期。 当一个新的观察者需要添加到系统时,我们只需要在对应的bundle中创建这个观察者实例,然后将其注册为OSGi...
通常,这会在插件的激活器(Activator)类中完成,通过跟踪服务来监听HttpService的可用性。一旦获取到HttpService,就可以调用它的`registerServlet()`方法,指定Servlet类和对应的URL映射。 例如,`...