OSGi框架有三种开源实现来选择:Apache Felix,Knopflerfish和Equinox。这里写的代码在上面的三个实现任意一个上运行都没问题,只是在启动指令上有一些不同。
在这里使用的是Equinox。
一、环境准备
默认已经安装了Java 1.5以上的开发环境。
1、核心框架
如果链接有问题请访问 http://download.eclipse.org/eclipse/equinox/
2、目录设置
在C:/下创建目录 osgi-dev,将 org.eclipse.osgi_3.3.1.R33x_v20070828.jar 复制到 C:/osgi-dev 目录中。
二、与OSGi "第一次接触"
1、最小的OSGi运行环境
在命令提示符下进入C:/osgi-dev 目录,执行以下命令:
> java -console -jar org.eclipse.osgi_3 .3.1 .R33x_v20070828.jar
几秒钟,osgi>提示符显示出来。
在osgi>提示符下执行 ss :
osgi>ss
显示:
C:osgi-dev>java -console -jar org.eclipse.osgi_3 .3.1 .R33x_v20070828.jar
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3 .3.1 .R33x_v20070828
osgi>
这是最小的OSGi运行环境:equinox 正在运行!
为了保持命令的简短,将org.eclipse.osgi_3.3.1.R33x_v20070828.jar重新命名为equinox.jar。
> java -jar equinox.jar –console
2、编写Hello World的Bundle
内容为:
import org.osgi.framework. * ;
public class HelloActivator implements BundleActivator {
public void start(BundleContext context) {
System.out.println( " Hello World! " );
}
public void stop(BundleContext context) {
System.out.println( " Goodbye World! " );
}
}
内容为:
Manifest-Version: 1.0
Bundle-Name: HelloWorld
Bundle-Activator: HelloActivator
Bundle-SymbolicName: HelloWorld
Bundle-ClassPath: .
Bundle-Version: 1.0.0
Import-Package: org.osgi.framework
osgi>close
退出equinox环境。
> javac -classpath equinox.jar HelloActivator.java
> jar -cfm HelloWorld.jar HelloWorld.mf HelloActivator.class
> java -jar equinox.jar –console
osgi>ss
会发现没什么变化,接下来执行install命令并附带参数:
osgi>install file:HelloWorld.jar
显示:
Bundle id is 1
执行ss命令:
osgi>ss
显示:
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3 .3.1 .R33x_v20070828
1 INSTALLED HelloWorld_1 .0.0
osgi>
执行start 1命令:
osgi>start 1
显示:
Hello World!
osgi>
执行close命令:
osgi>close
显示:
Goodbye World!
至此,完成了一个在OSGi的equinox实现环境下的最简单的bundle。