java - 在 OSGi 环境中开始使用捆绑 DI

标签 java osgi apache-felix

我已经使用 Apache Felix 作为我的 OSGi 运行时开发应用程序一段时间了,到目前为止,进展非常好。然而,我现在想采用依赖注入(inject),Apache Felix 的“默认”机制似乎是 iPOJO。

但是,我发现有关 Apache felix 的文档和教程太薄弱,我还没有取得任何进展。所以我准备改变,但首先我最好解释一下我正在尝试做的(非常简单的)想法。

给定两个 bundle ;

消费包

package bundles.consumer;

class Consumer implements BundleActivator{
    @Inject
    private Producer producer;

    public void bundleActivated(BundleContext con) {
        this.producer.getNextItem();
    }
}

生产者 bundle

package bundles.producer;

@Singleton
class Producer {
    public String getNextItem() {
        return "item x"; 
    }
}

我希望 OSGi 运行时启动 Consumer 包,意识到它需要一个 Producer 才能工作,然后框架启动 Producer 包并将实例注入(inject)到 Consumer 中。简单。 iPOJO 建议仅使用注释(@Singleton、@Inject)或类似的方法可以做到这一点,但我根本无法让它工作。 OSGi 显然有声明性服务,但这意味着要编写大量 XML,而我确实想避免这样做。

Anywoo,我准备采用 JBoss、Equinox 或替代 OSGi 运行时以及替代依赖注入(inject)机制,无论是 Peaberry、Spring DM 还是完全不同的东西。我已经在使用 Maven 了。

我要问的是,有人可以使用生产者和消费者的想法创建一个 Hello World 来帮助我开始吗?我真的花了很多时间阅读并发现学习曲线难以克服!

<小时/>

编辑,我尝试使用 SCR:http://tydus.net/codeExamples/mvnScr.tar

最佳答案

最好使用声明式服务,因为它是 OSGi 标准。

您可以使用 Java 注解来描述 DS 依赖项、服务和组件 Maven SCR plugin

问候, 德米特罗

关于java - 在 OSGi 环境中开始使用捆绑 DI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8797301/

相关文章:

java - 如何在Java中导入

embed - 在 OSGi 包中嵌入 jar 时,忽略还是可选解析?

java - 将数据传递到 OSGI 包

java - 在哪里用同步块(synchronized block)捕获 Object.wait() 的 InterruptedException?

jvm - JDK中找不到JRE

c# - Android/Java对应C# Stream对象方法Write()的方法是什么?

java - Glassfish 上的 OSGI 束间通信

java - 使用 Web Start/JNLP 动态加载额外的 jar 文件

android - Apache Felix 可以在新的 Android RunTime (ART) 中运行吗?

jersey - OSGi、Jersey 和 "No message body writer has been found for class"