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

消费一个Bundle服务

    博客分类:
  • OSGi
阅读更多

1、消费接口及其实现类

public interface UserValidatorListener {
	public boolean checkUser(String username, String password)throws Exception;
}

 

public class UserValidatorListenerImpl implements UserValidatorListener {
	private ServiceTracker serviceTracker;
	
	public UserValidatorListenerImpl(ServiceTracker serviceTracker){
		this.serviceTracker = serviceTracker;
	}
	
	@Override
	public boolean checkUser(String username, String password)throws Exception{
		Validator validatorService = (Validator)serviceTracker.getService(); //取得被跟踪的服务
		if(validatorService==null){
			return false;
		}else{
			return validatorService.validate(username, password); //调用服务方法
		}
	}
}

 

2、Bundle激活器

public class UserValidatorWebActivator implements BundleActivator {
	private ServiceRegistration serviceRegistration;
	private ServiceTracker serviceTracker;
	
	public void start(BundleContext context) throws Exception {
		serviceTracker = new ServiceTracker(context, Validator.class.getName(), null); //服务跟踪器,对Validator服务进行跟踪
		serviceTracker.open(); //启动服务跟踪器
		
		UserValidatorListener listener = new UserValidatorListenerImpl(serviceTracker);
		boolean b = listener.checkUser("admin", "admin2");
		System.out.println("用户验证结果:" + b);
	}

	public void stop(BundleContext context) throws Exception {
		serviceTracker.close(); //关闭服务跟踪器
	}
}

 

3、MANIFEST.MF文件内容

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: UserValidatorWebBundle
Bundle-SymbolicName: UserValidatorWebBundle
Bundle-Version: 1.0.0
Bundle-Activator: com.cjm.bundle.user.service.web.UserValidatorWebActivator
Import-Package: com.cjm.bundle.user.service;version="1.0.0",
 org.osgi.framework;version="1.3.0",
 org.osgi.util.tracker;version="1.3.3"

 

4、打包Bundle后,执行install命令安装Bundle,执行start命令启动Bundle

 

 

  • 大小: 24.2 KB
分享到:
评论

相关推荐

    ECF发布和获取服务bundle

    在ECF中,一个bundle可以通过发布服务来暴露其功能,其他bundle则可以通过查找和绑定这些服务来使用它们。这样的设计使得系统具有高度的模块化和可重用性。 "Virgo"是SpringSource开发的一个OSGi应用服务器,它基于...

    OSGI bundle

    一个OSGI bundle包含类、资源以及元数据,这些元数据描述了bundle如何与其他bundle交互。理解OSGI bundle是深入学习OSGI框架的关键。 **在线用户管理** 在线用户管理是现代Web应用中的常见需求,它涉及到用户注册...

    felix学习二-发布classpath为bundle

    6. **消费服务**: 其他bundle可以通过查询`ServiceReference`来找到并消费我们的服务,也可以通过监听`ServiceEvent`来跟踪服务的变化。 文件`Main.java`可能是示例程序,演示了如何在Felix环境中创建和管理bundle...

    基于Eclipse的Equinox框架开发OSGi Bundle应用

    **示例应用**:压缩包中的"osgi_example"可能包含了一个简单的OSGi Bundle示例,例如,创建一个HelloWorld服务,其他Bundle可以注册和使用这个服务。 总结来说,基于Eclipse的Equinox框架开发OSGi Bundle应用,可以...

    juddi-portal-bundle-3.1.0.zip

    Juddi-portal-bundle-3.1.0.zip是Juddi项目的最新版本,它包含了Juddi门户的所有组件和配置,使得用户能够快速部署和运行一个完整的UDDI服务注册中心。这个压缩包的核心价值在于它不仅提供了一个强大的服务注册平台...

    jersey-bundle-1.9.1.jar.zip

    在Java开发领域,jersey-bundle是一个至关重要的组件,它主要用于构建RESTful Web服务。当我们遇到“java.lang.ClassNotFoundException: com.sun.jersey.spi.spring.container.servlet”这样的异常时,这通常意味着...

    SpringDM笔记6-Fragment及配置Log4j Fragment Bundle

    Fragment Bundle是一种特殊类型的Bundle,它的目的是增强或“附加”到另一个主Bundle(称为Host Bundle),以便共享其内部资源。Fragment Bundle可以访问Host Bundle的私有包,这对于跨Bundle的依赖注入和资源共享...

    OSGi_动态服务

    5. **服务重新注册**:如果另一个服务提供者bundle启动并注册了相同的服务,OSGi框架会再次通知消费者bundle,告知它有一个新的可用服务。 - **图7** 表现了服务重新注册的状态。 6. **新服务绑定**:消费者...

    cxf-bundle-jaxrs-2.4.7.zip

    【标题】"CXF-BUNDLE-JAXRS-2.4.7.zip" 是一个与Apache CXF相关的开源项目,它包含了一个JAX-RS(Java API for RESTful Web Services)的OSGi捆绑包。JAX-RS是Java平台上的标准,用于创建RESTful服务,而CXF是一个...

    osgi helloworld

    在OSGi环境中,一个服务可以被其他bundle消费。在`server` bundle中,可能会定义一个公开接口,供其他bundle通过服务注册和查找机制进行交互。这涉及到OSGi框架的核心组件,如BundleContext和ServiceRegistry,它们...

    osgi服务(加法和乘法)

    当乘法服务bundle被启动时,其他bundle可以利用这个服务进行乘法运算。 描述中提到,用户可以根据需求启动相应的服务。如果启动了加法服务bundle,那么系统将执行加法运算;反之,如果启动了乘法服务bundle,则执行...

    OSGI的消息机制及注册服务

    当一个bundle需要发送消息时,它可以发布一个服务,其他bundle则可以订阅这个服务来接收消息。另一种方法是使用EventAdmin服务,它是OSGI规范的一部分,提供了一种基于主题的消息传递机制。通过EventAdmin,bundle...

    亚马逊又悄悄上线Bundle捆绑销售功能!引爆Listing流量.pdf

    亚马逊Bundle是指卖家将多个相关或互补的产品组合成一个新的商品,创建一个单独的详细页面供消费者购买。这种组合销售的方式可以帮助卖家增加销售额,提高客单价,并吸引关联流量。 2. **Bundle带来的价值和好处**...

    Python库 | kafka_bundle-2.0.3.tar.gz

    本篇文章将聚焦于一个名为`kafka_bundle-2.0.3.tar.gz`的Python库,该库是专为处理Apache Kafka而设计的。Apache Kafka是一种高吞吐量、分布式的流处理平台,广泛用于大数据实时处理和消息传递。 首先,我们要明确`...

    GSGI+Eclipse LUNA 配置+HelloWorld例子+Bundle依赖

    1. 创建服务接口:我们首先创建一个名为`org.actual.helloworld`的工程,然后定义一个名为`Hello`的接口,其中包含一个`sayHello`方法。代码如下: ```java package cn.actual.helloword; public interface Hello {...

    把OSGI部署成一个可运行的例子

    1. 模块化系统:OSGI的核心是模块化,每个模块称为一个Bundle,每个Bundle都包含类、资源和元数据,它们有自己的命名空间,避免了类加载冲突。 2. 动态性:OSGI环境中的Bundle可以在运行时安装、启动、停止、更新或...

    osgi的讲解与一个实例

    在OSGi中,每个组件被称为一个"bundle",它包含了类、资源和其他元数据。Bundle有自己的生命周期,可以处于未安装、安装、解析、启动、暂停、停止或未解决的状态。开发者可以通过控制bundle的状态来管理其运行时行为...

    SpringDM笔记13-OSGi服务注册与引用

    使用facade模式,可以创建一个专门负责导出包的bundle(称为facade bundle),其他bundle通过`Require-Bundle`依赖这个facade来访问包中的类。 `Require-Bundle`是OSGi的manifest头,它指定了当前bundle对其他...

    OSGi入门篇:服务层

    服务接口为服务消费者和提供者之间提供了一个明确的契约,保证了服务的实现可以动态替换,而不会影响服务的使用者。 2. 服务的注册和发现 当一个bundle(OSGi中的模块化包)中的服务实现类准备好提供服务时,它会...

    OSGi -- Helloworld 学习记录一

    5. **服务消费**:创建另一个bundle来消费这个服务,通过Service Tracker或者直接引用服务的类来获取并调用服务。 6. **部署与运行**:将这两个bundle放入OSGi运行时环境中,并启动它们。如果一切正常,消费者...

Global site tag (gtag.js) - Google Analytics