osgi + felix example2b编写

前一篇博文中我们讲解了OSGI的传统注册式服务与声明式服务,再前一篇我们我们进行了osgi + felix example2的编写,这一篇博文我们编写了一个Bundle和一个接口并对这个接口进行了相应的实现之后,在这个bundle的start方法中进行了该服务的注册,并没有使用这个服务。本文中编写的程序仍然是不使用这个服务,只进行相应的注册,在example3中将会讲解使用这个服务。


程序

程序中变动的只是Activator中一部分内容,具体的程序如下:

package cn.com.example2b;

import cn.com.example2.DictionaryService;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

import java.util.Dictionary;
import java.util.Hashtable;

/**
 * Created by Administrator on 2016/6/19.
 */
public class Activator implements BundleActivator {

    public void start(BundleContext context) throws Exception {
        Hashtable<String, String> props = new Hashtable<String, String>();
        props.put("Language", "French");
        context.registerService(DictionaryService.class.getName(), new DictionaryImpl(), props);
        System.out.println("service registered...");
    }

    public void stop(BundleContext context) throws Exception {

    }

    private static class DictionaryImpl implements DictionaryService {

        String[] m_dictionary = {
                "bienvenue", "au", "tutoriel", "osgi"
        };

        public boolean checkWord(String word) {
            word = word.toLowerCase();
            for (int i = 0;i < m_dictionary.length; i++) {
                if (m_dictionary[i].equals(word)) {
                    return true;
                }
            }
            return false;
        }
    }
}

总结

相对于example2来说,变动的只是Bundle启动方法中,在进行服务注册的时候传入的参数不同,预计felix官网这么做的原因是要我们熟悉osgi注册式服务,本文也并不进行相应服务的使用,但本文中,个人有一些其他的想法,就是这个DictionaryService的实现类其实可以单独抽取出来,单独使用,因为在后文中几乎每个Bundle中都有这个接口的实现类,虽然m_dictionary有所不同,这些将在example6中单独抽取出来使用,因为后文中我对于服务注册的使用和felix官网所说有所不同,这些到时候再说,这一节不再讨论。

时间: 2024-10-09 21:12:28

osgi + felix example2b编写的相关文章

osgi + felix example3编写与使用服务的改进

osgi + felix example3编写与使用服务的改进 上一篇博文中我们提及了如何对一个服务进行注册,但在example2和example2b中都没有对这个服务进行相应的使用,在本文中将对这个服务进行使用相应的使用,在felix的官网中,对该服务的使用方法是对目前已经注册的bundle进行扫描,然后使用服务,但是个人觉得Activator这种启动bundle最好只有一个,并且本文搭建了一个完整的环境,部署多个Activator bundle也不现实,因此本文采用了其他方法. 思路 在本文

osgi + felix example2编写

在上次博文中配置了karaf的日志格式输出,在两篇之前的一篇文章编写了基本的felix中的简单的example编写,编写了一个简单的Activator,启动并得到正常的输出,这一篇博文将开始稍微复杂一点的程序编写,将进行一个服务的注册. DictionaryService 首先创建一个interface,命名为DictionaryService,添加以下内容: package cn.com.example2; /** * A simple service interface that defin

osgi + felix example1编写

在上篇博文中,我们搭建了osgi的整个运行环境,并将其他个别组件也整合了进来用于后续的开发,本播客系列将会将apache felix官网中example全部编写一遍,然后进行osgi后续的文章编写,如osgi command,blueprint,configAdmin等等,这些暂且放置一边,日后写博文的时候再谈. example模块 在上回建立的maven工程中,新建文件夹命名为Application,日后编写的应用模块都将放在这个文件夹之中,新建maven module 命名为example,

全手工快速开发osgi应用的方法

意义:直接使用编辑器编辑所需Osgi的服务,速度快.效率高. OSGI容器:选择knopflerfish_osgi_5.1.0 (http://www.knopflerfish.org/),支持OSGI最新的R5标准. 方法: 1 在当前目录下编写Activator.java文件(不需要建立相应的包文件夹--省事),内容如下(这个参照Felix的tutorial) package tutorial.example1; import org.osgi.framework.BundleActivat

扩展Tomcat支持OSGi应用服务

转自 扩展Tomcat支持OSGi应用服务(1) 扩展Tomcat支持OSGi应用服务(2) 扩展Tomcat支持OSGi应用服务(3) 1.摘要 OSGi的动态服务,包版本管理,安全设施,热插拔等特性吸引了越来越多开发人员的关注,由于OSGi不同于以往的设计理念,在企业级应用中一直没有很大的发挥.不过通过大家的不断努力,OSGi已在企业级服务平台中有所集成.本文站在另一个角度尝试Tomcat服务器下的OSGi服务集成,为web应用提供动态服务,为企业级开发提供参考. 本文需要读者了解以下内容:

SDN实战: Build a mini-lab environment and practice SDN-IP/ONOS with GNS3, Mininet and VMware

SDN IN ACTION: Build a mini-lab environment and practice SDN-IP/ONOS with GNS3, Mininet and VMware    薛国锋  [email protected] 本文主要通过简单的实验,对SDN相关概念以及ONOS开源软件等建立一个感性的印象,加深对核心概念的理解. SDN-IP is to adopt SDN/OpenFlow switches to replace the traditional IP/M

Hello OSGI --- Apache Felix

Apache Felix Felix是一个OSGi版本4规范的Apache实现. OSGi是一个基于Java的服务平台规范,其目标是被需要长时间运行.动态更新.对运行环境破坏最小化的系统所使用.有许多公司(包括Eclipse IDE,它是第一个采用OSGi技术的重要项目)已经使用OSGi去创建其微内核和插件架构,以允许在运行时刻获得好的模块化和动态组装特性.几个其他项目如Apache Directory.Geronimo.Jackrabbit.Spring以及JOnAS也都正在转向采用OSGi.

osgi与流行的框架(spring,struts,hibernate等)的集成

1.与流行的 JAVA B/S体系架构的集成 了解了基于osgi系统设计的基本思想,进一步来研究osgi与流行的框架(spring,struts,hibernate等)的集成,这里首先讲解一下集成原理. l        解决和spring的集成 由于spring的应用占据了大部分的java应用领域,所以解决与spring的集成是osgi必须解决的,spring-dm的推出大大促进了两者的结合,有助于osgi进军企业领域. Spring所带来得好处主要有这么两点: 1.       不需要对外的

OSGI中自定义command(2)

OSGI中自定义command(2) 前文 在上一篇博文中,我们讲述了什么是OSGI中的command,同时写了一个简单的command,这个command实现了org.apache.felix.gogo.commands.Action这个接口,同样可以实现相同功能的还有 org.apache.karaf.shell.console.OsgiCommandSupport这一个抽象类,但是在本程序中,这两个接口或者抽象类上都标注了@Deprecated,因此已经不推荐使用了,而当前推荐使用的则是k