首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为开发辅助工具的动态OSGi服务替换

作为开发辅助工具的动态OSGi服务替换
EN

Stack Overflow用户
提问于 2014-01-09 23:37:29
回答 1查看 613关注 0票数 0

我们使用Apache注释来处理应用程序中的所有OSGi内容。我有一个提供者类,可以与服务器对话。我有一个使用者类,用于处理来自服务器的数据。我想要的是创建另一个提供程序实例(新的类实现接口),它仅用于调试,它只返回对使用者请求的固定响应。理想情况下,我希望消费者不知道这种切换。它的提供者服务引用将被简单地替换。

用例:当开发人员在没有访问实际服务器的机器上运行时,他按下正在运行的应用程序中的一个按钮,将从真正的提供程序实例切换到我们的调试提供程序实例。

实现这一目标的推荐方法是什么?

示例代码:

代码语言:javascript
复制
public interface IProvider{
    public String getDataFromServer();
}


@Component
@Service(value=IProvider.class)
public class RealProvider implements IProvider{
    @Override
    public String getDataFromServer(){
        ...
    }
}


@Component
@Service(value=IProvider.class)
public class DebugProvider implements IProvider{
    @Override
    public String getDataFromServer(){
        return "Hello World";
    }
}


@Component
public class Consumer{
    private @Reference IProvider provider;

    public void doSomething(){
        provider.getDataFromServer();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-09 23:52:04

如果这两个提供程序在单独的包中,则可以停止Bundle A并启动Bundle B,以便在服务的实现之间切换。

如果这两个提供程序位于同一个包中,则需要将其放到OSGI并手动注册/取消注册服务,或者创建一个具有debugMode标志并委托给特定实现的代理版本的debugMode。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21033482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档