- 浏览: 1148793 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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倍效率”开发者
OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服务。这是一个非常简单的规范,没有完全提供通常在企业级日志工具中所具有的功能。但其扩展服务模块可以用于建立相当复杂的日志解决方案。 Felix Log是对于OSGI Log服务规范的一个简单的、基于内存的实现。
日志服务规范中定义了4个主要实体:
•org.osgi.service.log.LogService – 用于记录信息的接口,包括日志级别、日志信息、异常等的服务接口
•org.osgi.service.log.LogReaderService – 用于添加移除LogListener实例,检索最近的日志条目
•org.osgi.service.log.LogEntry – 定义日志条目的接口
•org.osgi.service.log.LogListener – 为日志条目定义监听器的接口
1)访问日志服务
要访问一个LogService实例,需要在OSGi的服务记录(service registry)中寻找它。如下代码片段所示:
public class Activator implements BundleActivator { public void start( BundleContext context) throws Exception { ServiceReference ref = context. getServiceReference ( LogService. class . getName ()); if ( ref != null ) { LogService log = ( LogService) context. getService ( ref); // Use the log... } } //..
2)使用日志
LogService接口提供了4种方法用于日志记录,如下代码片段所示:
public interface LogService { //.. // Log a message specifying a log level public log ( int level, java. lang . String message) // Log an exception public log ( int level, java. lang . String message, java. lang . Throwable exception) // Log a message specifying the ServiceReference that generated it public log ( ServiceReference sr, int level, java. lang . String message) // Log a message specifying the ServiceReference and exception public log ( ServiceReference sr, int level, java. lang . String message, java. lang . Throwable exception) }
日志的级别定义如下:
LogService.LOG_DEBUG
LogService.LOG_INFO
LogService.LOG_WARNING
LogService.LOG_ERROR
3)检索日志条目(log entry)
LogReaderService提供getLog()方法用于检索回一个最近使用的日志条目的列举。如下代码片段展示如何从服务记录中检索它:
ServiceReference ref = context. getServiceReference ( LogReaderService. class . getName ()); if ( ref != null ) { LogReaderService reader = ( LogReaderService) context. getService ( ref); Enumeration< LogEntry> latestLogs = reader. getLog (); }
4)创建并注册一个LogListener
日志服务规范并没有定义任何特别的要存储的条目,或对日志条目进行写;这个功能是由开发者自行定义实现的。为了创建这样的一个bundle,第一步是创建LogListener这个接口的实现,如下代码片段展示了一个回显日志信息的简单实现:
public class LogWriter implements LogListener { // Invoked by the log service implementation for each log entry public void logged ( LogEntry entry) { System. out . println ( entry. getMessage ()); } }
唯一需要实现的方法是logged(),每一次当一个日志条目在相关日志服务中被创建的时候,这方法将被调用。一个LogListener接口的实现必须与LogReaderService注册才能开始检索日志条目,如下所示:
ServiceReference ref = context. getServiceReference ( LogReaderService. class . getName ()); if ( ref != null ) { LogReaderService reader = ( LogReaderService) context. getService ( ref); reader. addLogListener ( new LogWriter()); }
5)设置 Apache Felix 日志服务
Apache Felix日志服务的bundle对Felix没有任何特定依赖,因此它可以在任何OSGi container上运行。也是通过键值对进行配置;对于它的配置,将使用如下两个可选的系统属性:
Property Default Description org.apache.felix.log.maxSize 100 日志历史的最大值,-1表示没有上限,0表示没有历史记录需要被保留。 org.apache.felix.log.storeDebug false 决定是否将调试消息是否保存于历史中。
发表评论
-
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20324.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2489摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1422随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1409随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1633OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12481、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1057不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1227registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1361在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1306osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1164软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3538将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1329Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11551、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1421Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13311、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1207一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1159当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1559OSGi Core定义了一个服务层,提供了一个Bundl ... -
OSGI 中嵌入 Http 服务器的运行环境
2012-07-31 13:44 3054Eclipse 4.2 OSGI 依赖的Bundle: or ...
相关推荐
4. **使用Felix SCR**:Apache Felix Service Component Runtime (SCR)是OSGi服务组件的实现,它允许你在OSGi环境中声明和管理组件。在Spring Bean上使用@Component和@Service等注解,声明它们为OSGi服务。 5. **...
运行嵌入式Apache Felix OSGI容器的示例Spring Boot Web应用程序 ... 创建FelixService作为Spring Service Component和ApplicationReadyEvent事件侦听器以对其进行初始化 配置Felix以加载一些预定
Equinox提供了`System.out.println`替代品,如`Platform.getLog()`,它可以将日志信息发送到控制台或日志文件。 7. **运行时环境**:为了运行Equinox应用,你需要一个OSGi运行时,如Equinox本身或Felix。你可以通过...
OSGi Log Service遵循OSGi R4规范中的标准接口,允许在OSGi容器内的各个 bundle 之间共享日志功能。这个服务允许bundle发送日志事件,而无需关心具体的日志实现。当JBoss OSGi使用Log Service时,它会将这些日志事件...
标题“spring-dm-osgi整合jar包”和描述“spring-dm整合osgi所需所有jar包”提及的核心知识点是Spring Dynamic Modules(简称Spring DM)与OSGi(Open Service Gateway Initiative)框架的集成。这两个技术在Java...
Felix中使用Jetty实现HTTP Service PAX中使用Jetty实现HTTP Srevice ProSyst mBedded Server Equinox Edition Spring Dynamic Modules里的Jetty JOnAS5里的Jetty 配置Ajax、Comet和异步Servlets 持续和异步Servlets ...
标题 "osgi-ibatis" 暗示了这是一个关于如何在OSGi环境中集成iBatis的示例项目。iBatis是一个流行的SQL映射框架,它允许开发者将SQL语句直接嵌入到Java代码中,以实现数据访问层的操作。而OSGi(Open Service ...
5. **日志和调试**:利用OSGI容器提供的日志和调试工具,如`org.osgi.service.log`服务,进行深入的错误追踪。 6. **使用工具**:可以借助工具,如Pax Exam进行集成测试,或使用Eclipse PDE插件来可视化bundle和它们...
4. 依赖库:包括了对Apache Felix或Equinox等OSGi容器的适配器,以及一些基础库,如log4j、commons-lang等。 综上所述,Spring OSGi结合了Spring的便利性和OSGi的模块化优势,为Java企业级应用提供了一种高效、灵活...