`
zhangwei_david
  • 浏览: 475984 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在Felix中运行bundle

 
阅读更多

前面搭建了一个Apache Felix的运行环境,下面就写一个简单的bundle,测试测试。

1、新建一个插件工程,如下图:


 

点击下一步。
 

2、给插件工程命名一个名字,这里叫pig1。This plug-in is targeted to run with中选择an OSGI framework -->standard,如下图红框中所示:


 

点击下一步。
 

3、bundle中有一个启动类,默认是Activator,相当于普通工程中的Main类。你也可以把它更改成其他名字,这里使用默认的名字。如下图:


 

点击下一步。
 

4、去掉Create a plug-in using one of the templates,如下图:


 

点击Finish。

5、插件工程建好后,打开Activator类,可以看到里面有一个start方法和一个stop方法,可以在bundle启动和停止的时候做一些事情。这里只是简单地输出一个字符串,作为bundle启动和停止时的标识。

Java代码 复制代码 收藏代码
  1. /* 
  2.      * (non-Javadoc) 
  3.      *  
  4.      * @see 
  5.      * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext 
  6.      * ) 
  7.      */  
  8.     public void start(BundleContext bundleContext) throws Exception  
  9.     {  
  10.         Activator.context = bundleContext;  
  11.         System.out.println("start pig1");  
  12.     }  
  13.   
  14.     /* 
  15.      * (non-Javadoc) 
  16.      *  
  17.      * @see 
  18.      * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) 
  19.      */  
  20.     public void stop(BundleContext bundleContext) throws Exception  
  21.     {  
  22.         Activator.context = null;  
  23.         System.out.println("stop pig1");  
  24.     }  
/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext
	 * )
	 */
	public void start(BundleContext bundleContext) throws Exception
	{
		Activator.context = bundleContext;
		System.out.println("start pig1");
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
	 */
	public void stop(BundleContext bundleContext) throws Exception
	{
		Activator.context = null;
		System.out.println("stop pig1");
	}

 
 6、代码也写好后,就可以导出插件工程发布了。如何让这个工程作为一个bundle被部署到Felix容器中呢?右击插件工程pig1,选择Export。可看下图:


 

出现Export视图之后,选择Plug-in Development下的Deployable plug-ins and fragments,如下图:



 
点击下一步,选择要导出的插件,Destination选项卡的Directory选择我们的Felix环境的物理地址,导出后,会在Felix工程的根目录自动创建一个plugins目录,bundle会默认导出这个目录。如下图:


 

点击Finish,你就可以看到Felix工程下面多了一个plugins目录,我们所导出的bundle就在里面,如下图:


 

7、接着就是安装、运行了。

有三种方法可以安装、运行一个bundle。

(1)使用命令。

首先,启动Felix,在Console中先使用install命令安装bundle,接着使用start命令启动bundle,如下图:



 
启动的时候,start命令后接着那个bundle的启动ID就可以启动bundle了,如上图的12。

可以看到,当启动bundle的时候,输出了Activator类中start方法的输出语句,即"start pig1"。

Pig1的状态为Active,说明bundle启动成功了。

当然,你也可以使用uninstall命令卸载一个bundle,用法如install命令。

 

(2)使用Felix配置文件,打开conf/config.properties,如下图:



 

打开config.properties,找到felix.auto.start.1参数,值写成file:plugins/pig1_1.0.0.201109291700.jar,如:

(如果你有多个bundle,之间用空格隔开)。

 

参数代码 复制代码 收藏代码
  1. # The following property is a space-delimited list of bundle URLs  
  2. # to install and start when the framework starts. The ending numerical  
  3. # component is the target start level. Any number of these properties  
  4. # may be specified for different start levels.  
  5. felix.auto.start.1=file:plugins/pig1_1.0.0.201109291700.jar  
# The following property is a space-delimited list of bundle URLs
# to install and start when the framework starts. The ending numerical
# component is the target start level. Any number of these properties
# may be specified for different start levels.
felix.auto.start.1=file:plugins/pig1_1.0.0.201109291700.jar

 

参数写好后,启动Felix,你就可以看到bundle Pig1自动安装并启动了,如下图所示:



 

(3)第三种方法就是使用File Install了,使用Apache Felix的File Install bundle,我们可以安装和启动bundle而无需启动Felix,这个将在下面的章节中讲解。

 

8、OK,完成了。

分享到:
评论

相关推荐

    Eclipse中搭建Felix运行环境

    本篇文章将详细介绍如何在Eclipse中搭建Felix运行环境,以便进行OSGI企业应用的开发。 首先,我们需要安装Eclipse IDE,这是一个广泛用于Java开发的强大工具。确保你的Eclipse版本支持插件开发,例如Eclipse IDE ...

    felix学习二-发布classpath为bundle

    当bundle被加载到系统中时,它首先被安装,然后解析其依赖关系,接着启动执行其启动代码,最后变为活跃状态,此时bundle中的服务可以被其他bundle使用。 在"felix学习二-发布classpath为bundle"这个主题中,我们...

    Felix华为Felix开发和运行包。

    2. `config.properties` - 配置文件,定义了Felix运行时的行为和设置。 3. ` felix-launcher.jar` - 用于启动Felix框架的脚本或可执行文件。 4. `plugins/` - 目录,包含各种OSGi bundle(模块),这些bundle提供了...

    OSGI中Hibernate扩展在felix中的应用

    标题"OSGI中Hibernate扩展在felix中的应用"指的是如何在OSGI Felix框架中整合和使用Hibernate。Felix是Apache软件基金会的一个项目,它是OSGI规范的开源实现。将Hibernate引入OSGI环境,可以实现更灵活的部署和管理...

    org.apache.felix.main.distribution-4.2.1.zip

    3. **Bundle**:在 Felix 中,bundle 是 OSGi 应用程序的基本构建块,相当于 Java 包的概念,但更加强大和灵活。每个 bundle 都有自己的类加载器,并且可以声明依赖于其他 bundle,从而实现了模块间的隔离和依赖管理...

    apache-felix-demo

    Apache Felix 演示(apache-felix-demo)通常是为了展示如何在 OSGi 环境中开发和运行应用程序,帮助开发者理解 Felix 的工作原理和使用方法。 在这个 demo 中,"order" 可能代表一个订单处理系统的实例,展示了...

    利用felix和struts2实现osgi web

    Web应用负责Web交互,四个bundle中,一个是Web bundle,另外两个(local time service bundle和utc time service bundle)分别实现获取本地时间和世界标准时间的接口服务。 - 结构原理:Web容器注册Struts OSGi监听...

    felix 文档

    OSGi 是一个面向服务的架构,旨在为 Java 应用程序提供模块化支持,使应用程序能够在运行时动态加载、更新和卸载组件,而不会对整个系统的稳定性造成影响。 **特点:** - **模块化:**OSGi 支持模块化开发,每个...

    felix软件包

    - **动态性**:bundle可以在运行时被添加、移除或更新,无需重启框架,提供了高度的灵活性。 Apache Felix还提供了额外的服务,比如Gogo命令行接口,用于交互式管理OSGI环境,以及PAX Exam这样的集成测试框架,用于...

    Felix_OSGi实作

    OSGi规范使得Java程序可以被设计成一套小型的、独立的模块(称为Bundle),这些模块可以在运行时动态地加载、卸载、启动或停止。 Felix是一个遵循OSGi规范的轻量级、模块化的Service Oriented Runtime,由Apache...

    Felix 和 Struts2 开发 Web 应用

    5. 部署bundle:将Struts2的bundle部署到Felix容器中,容器会自动解析并加载配置,使Web应用可以正常运行。 在压缩包"Struts2.1.8ToFelix1.4"中,可能包含了Struts2版本1.8和Felix版本1.4的库文件和其他相关资源。...

    Felix 2.0.4

    在Felix 2.0.4版本中,我们看到了OSGi技术的强大应用和持续改进。 首先,让我们深入了解OSGi的优势。OSGi通过提供动态模块系统解决了Java平台上的类加载器问题,使得模块间依赖关系得以清晰管理和控制。开发者可以...

    Felix 小例子

    用户可以通过解压此文件获取Felix运行时环境,然后部署和运行示例应用。 2. "osgi_orderapp_for_felix.zip":这个文件很可能是与Felix相关的订单处理应用程序。根据名称,这可能是一个示例应用,演示了如何在OSGi...

    osgi felix plug in

    - **插件机制**:Felix Plugin是指在Felix环境中运行的特定功能扩展,例如,提供新的服务、管理其他bundle等。 3. **Felix Plugin的应用**: - **服务注册与查找**:插件可以注册服务到OSGi服务注册表,其他...

    Apache Felix 框架整理包 开箱即用

    在描述中提到的“框架运行环境”是指 Apache Felix 为运行 OSGi 应用程序提供的基础环境,包括启动器、类加载器、服务注册表等核心组件。这些组件共同确保了 OSGi bundle 之间的隔离性和协作性,使得不同 bundle ...

    felix 可以用jar包

    在实际使用中,开发者需要配置Felix的配置文件(通常是`config.properties`),指定模块(bundle)的路径,以及它们的启动顺序等。然后,可以通过Felix的命令行工具或API来管理这些模块,如安装、启动、停止或更新...

    felix-framework-6.0.1.rar

    2. **Services**:OSGi服务是一种共享资源,可以在运行时被多个bundle发现和使用,实现解耦合。 3. **生命周期**:Bundle有启动、活动、暂停、停止和卸载等状态,可以动态地安装、更新和卸载,支持热更新。 4. **...

    OSGI bundle

    这通常涉及到设置IDEA的项目结构、添加Felix框架的依赖、配置运行配置等操作,使得开发者可以在IDEA中调试和测试OSGI bundle。 **总结** OSGI bundle提供了一种模块化的软件开发方式,使得Java应用程序可以按需...

    eclipse maven 打包bundle

    6. **部署和运行bundle**: 打包完成后,可以在OSGi容器(如Apache Felix, Equinox)中部署和运行生成的.bundle文件。 博客链接提供的文章可能更详细地介绍了这些步骤,并可能包括了如何处理特定问题、最佳实践,...

    felix整合spring

    部署时,每个Spring Bean的定义都应该封装在一个独立的bundle中,以便于管理和更新。 10. **性能与优化**:整合后,关注性能和内存使用情况。OSGi的动态性可能导致额外的开销,因此需要对服务的生命周期管理进行...

Global site tag (gtag.js) - Google Analytics