`
raymond.chen
  • 浏览: 1417993 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Equinox的入门范例

    博客分类:
  • OSGi
阅读更多

1、从Eclipse安装程序中找到org.eclipse.osgi_3.3.0.v20070530.jar文件(版本字符串取决于你的Eclipse)并将它复制到一个空目录。为了保持命令的简短, 我们重命名该文件为equinox.jar。

 

2、在DOS命令窗口中定位到equinox.jar文件所在目录下,并执行以下命令:

     java -jar equinox.jar -console

 

     如果屏幕出现 osgi> 提示符,则说明OSGi已经成功运行了。

 

    可以输入ss命令,查看已经安装的Bundle列表和它们当前的状态信息:

这表示有一个Bundle已被安装和激活,并且它是系统Bundle。这是一个在OSGi中总是存在的特殊Bundle,它表示框架本身。

 

3、创建自己的Bundle

     在同一目录下创建一个名为HelloActivator.java的类文件,该类必须实现BundleActivator接口,源码如下:

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class HelloActivator implements BundleActivator {
	public void start(BundleContext context) throws Exception {
		System.out.println("start hello bundle!");
	}

	public void stop(BundleContext context) throws Exception {
		System.out.println("stop hello bundle!");
	}
}

 
4、创建Bundle的描述文件

    一个Bundle需要一个MANIFEST文件来声明各种关于Bundle的描述数据,例如它的名称,版本等等。这里创建一个名为Hello.MF的文件,内容如下:

Manifest-Version: 1.0
Bundle-Name: Hello
Bundle-Activator: HelloActivator
Bundle-SymbolicName: Hello
Bundle-Version: 1.0.0
Import-Package: org.osgi.framework

  注意:文件必须以一个空行结尾,否则,jar命令行工具会截去文件最后一行内容。

 

    导入包:Import-Package: com.cjm.bundle.user.service;version="[1.0.0,2.0.0)", org.osgi.framework;version="1.3.0"

 

    导出包:Export-Package: com.cjm.bundle.user.manager;version="1.0.1", com.cjm.bundle.user.service;version="1.0.0"

 

    方括号意味着包括,圆括号意味着排除。  

 

    如果缺少 Import-Package: org.osgi.framework 描述,则会抛出类似以下的异常信息:

org.osgi.framework.BundleException: The activator HelloActivator for bundle Hello is invalid
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:141)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:970)
	......
Caused by: java.lang.NoClassDefFoundError: org/osgi/framework/BundleActivator
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:621)

 

5、编译打包Bundle

     在新的DOS命令窗口中定位到equinox.jar文件所在目录下,并按顺序执行以下两个命令:

          javac -classpath equinox.jar HelloActivator.java
          jar -cfm Hello.jar Hello.mf HelloActivator.class

     将会在当前目录下生成一个名为Hello.jar的文件

 

6、安装Bundle

     在OSGi控制台中执行以下命令: install file:Hello.jar ,控制台输出Bundle id is 1。重新执行ss命令可以看到Bundle已被成功安装。

 

7、启动Bundle

     在OSGi控制台中执行以下命令:  start 1 ,其中1是Bundle的id

 

8、停止Bundle

     在OSGi控制台中执行以下命令:  stop 1 ,其中1是Bundle的id

 

9、卸载Bundle

     在OSGi控制台中执行以下命令:  uninstall 1 ,其中1是Bundle的id

 

  • 大小: 11.2 KB
  • 大小: 10.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics