OSGi
saloon_yuan
这个作者很懒,什么都没留下…
展开
-
bundle通信----综述
OSGi中,我们可以把要实现的功能分割成多个子模块,每个子模块用单独的bundle来实现其专属功能,每个bundle都有自己的classloader, 从而做到了真正的物理意义上的模块隔离。这样一来就引出了bundle间相互通信的问题, 总的来说,bundle间通信主要由以下三种手段实现:(1):通过Export-Package和Import-Package实现 每个模块可以通原创 2012-08-04 08:52:38 · 3022 阅读 · 0 评论 -
bundle开发----数据库访问(基于MySQL)
看完基于串口和Socket的bundle实现,本文中我们来看看bundle中如何实现数据库的访问。先来看看DatabaseBundle.java(数据库使用的是MySQL,并且已经创建了一个名为demo_db的数据库和一个名为user_table的表用来保存用户名和密码)package demo.database.bundle;import java.sql.*;publ原创 2013-01-01 20:37:58 · 1873 阅读 · 4 评论 -
bundle开发----Socket通讯(Server)
上一篇中实现了一个串口通讯的bundle,本例中我们来看看如何实现一个基于Socket的网络通讯bundle。先来看看WifiBundle.java,代码如下:package demo.wifi.bundle;import java.io.IOException; import java.net.SocketAddress;import java.net.InetSock原创 2012-12-29 14:22:24 · 2030 阅读 · 0 评论 -
bundle开发----串口通讯
本文将实现一个linux下串口通讯的bundle,为了简单说明,代码中我们只是将串口做一个回环(收到的数据原封不动发送出去)。Window下代码无需改动,只需将代码中virPortName 改成对应“COM0“即可。另外,本工程需要下载RXTXcomm.jar并将其添加进库中。先来看看SerialPortBundle.java,代码如下:package demo.serialpor原创 2012-12-28 15:41:58 · 1729 阅读 · 5 评论 -
bundle自动更新
OSGi的最大优点就是能实现热部署(hot deployment),所谓热部署,就是在不停止服务运行的情况下(或者说在不影响用户体验前提下)动态更新其服务内容(和硬件领域的热插拔的概念很类似)。上篇bundle动态更新文章中,我们知道了如何在手动更新bundle(通过update,refresh,install等功能),现在有个新问题:如果对某个bundle需要更新时,需要手动把这个新版本的bun原创 2012-10-14 15:39:02 · 3593 阅读 · 0 评论 -
bundle动态更新
实际项目开发中,更新Bundle时遇到这样一个问题(基于Knopflerfish框架的OSGi): 项目大概框架为主Bundle(暂时称之为MainBundle)调用其他Bundle(SubBundles)提供的方法来进行相应的数据运算,现在想更换某个Bundle(SubBundle1)的算法,用新生成的Bundle覆盖掉老的版本,update该SubBundle之后,发现MainBu原创 2012-10-14 15:12:40 · 4164 阅读 · 0 评论 -
bundle通信----Event方式
针对事件的实现,OSGi中的 Event Admin 服务规范提供了基于发布 / 订阅模型(publish-subscribe model)这种方法,Event Admin 服务将事件从发布者(Publishers)转发到订阅者(Subscribers),从而实现bundle间的通信。具体流程如下图所示: 事件由org.osgi.s原创 2012-08-04 11:13:02 · 4358 阅读 · 1 评论 -
bundle通信----类访问
上篇中我们演示了如何通过Event方式来实现Bundle间的通信。Bundle中类的缺省访问范围只对本Bundle内部可见,但对其它任何Bundle都是不可见的;在Bundle内部,类的可访问性遵循Java语言的一般规范。那么,如果想要从一个Bundle中访问另一个Bundle中的类,该怎么办呢?解决方法是将源Bundle中的包导出来,然后把它们导入到目标Bundle中,就能实现Bundle之间类原创 2012-08-10 19:07:12 · 1618 阅读 · 0 评论 -
bundle开发----Socket通讯(Client)
上篇记录了作为Server端bundle的实现,本文看看作为Client端如何实现一个bundle,代码改动的地方很小。先来看看WifiBundle.java,代码如下(远程服务器地址为:192.168.0.1,端口号为:16384): package demo.wifi.bundle; import java.io.IOException;原创 2013-01-01 07:58:40 · 3165 阅读 · 0 评论