java - OSGI:DS 和组件工厂问题

标签 java osgi apache-felix

我需要的是每次当某个消费者需要此服务+使用 CDI 时获取新的服务实例。我读了很多文章,但找不到两个问题的答案。

  1. 如果我们使用工厂,为什么在服务使用者中我们调用工厂( http://www.rpgnextgen.com/wiki/doku.php?id=component_factory ),然后我们获得对服务的引用。我的意思是

    // get factory
    ComponentFactory factory = (ComponentFactory) context.getService(serviceReferences[0]);
    // get instance
    ComponentInstance instance = factory.newInstance(null);
    

有没有办法在osgi内部调用工厂时,用特定的接口(interface)设置工厂并在服务消费者中调用服务?

  • 如果在服务消费者中我们调用工厂,那么为什么当事实上的工厂是组件时我们将服务标记为组件?
  • 问题是,如果没有工厂,我可以使用 @Inject @OsgiService (javase) 或 @OSGiService (javaee) 并且我可以使用不同的过滤器,并且代码非常清晰。使用组件工厂我(据我所知)失去了这种能力。

    最佳答案

    ComponentFactory 是为想要使用工厂的消费者而存在的,因为他们想要控制各个组件的生命周期。例如,如果他们想要为每个 Web 请求创建组件的实例。

    如果您不想使用 ComponentFactory...那就不要使用。

    关于java - OSGI:DS 和组件工厂问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31354996/

    相关文章:

    osgi - 使用 gogo 自定义命令时产生的异常

    java - java中使用SimpleDateFormat进行时间格式化

    java - 获取 JSON 项目内部的 JSON 项目 Java

    java - 如何构建具有依赖关系的 OSGi 服务并通过 DS 发布

    java - 如何找到正在运行的 Equinox 实例的 pid,是否有 pid 文件?

    maven-2 - pax-run 在 pom.xml 中使用 Maven 插件

    repository - 如何配置 Felix OBR 存储库列表?

    Java - 运行时反射设置值

    java - 使用帮助参数时覆盖 required() 参数

    java - Tomcat:Tomcat内部是如何卸载类的?