java - 声明式服务组件满意和不满意

标签 java osgi equinox declarative-services

我正在开发一个基于 OSGI 的系统,该系统使用声明性服务来定义组件。但是,当从 Eclipse 运行它时,我的组件之一未初始化。当我使用简单的控制台命令调查问题时,我得到以下输出(带有一些小的混淆):

osgi> component 51
    Component[
    name = com.e.location.view
    activate = activate
    deactivate = deactivate
    modified = 
    configuration-policy = optional
    factory = null
    autoenable = true
    immediate = false
    implementation = com.e.location.view.LocationViewContribution
    state = Unsatisfied
    properties = 
    serviceFactory = false
    serviceInterface = [com.e.model.ViewContribution]
    references = {
        Reference[name = SpecificationProvider, interface = com.e.SpecificationProvider, policy = static, cardinality = 1..1, target = null, bind = setSpecificationProvider, unbind = null]
    }
    located in bundle = com.e.location.view_1.0.0.SNAPSHOT [107]
]
Dynamic information :
  The component is satisfied
  All component references are satisfied
  Component configurations :
    Configuration properties:
      component.name = com.e.location.view
      component.id = 55
      objectClass = String[com.e.model.ViewContribution]
    Instances:

所以该组件有 state = Unsatisfied ,但动态信息表明该组件已满足,并且其组件引用也已满足。

有人能解释一下吗?为什么我的组件没有初始化?

更新:显然,设置 immedate="true"该组件修复了初始化问题。 osgi命令仍然有state = Unsatisfied尽管。有人知道为什么吗?

最佳答案

我们遇到了类似的问题:

  • 组件的activate方法抛出异常(见日志)
  • 组件的 activate 方法没有返回(参见线程转储)
    • activate 中的无限循环(或 JVM 增强递归)
    • 死锁

如果您在 equinox 中并且没有安装将 LogEvents 转发到日志文件/控制台的 bundle ,请不要忘记检查配置目录,Equinox 在其中放置错误消息的日志文件。

关于java - 声明式服务组件满意和不满意,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27445070/

相关文章:

c# - 在java中读取c#二进制文件

java - 在应用程序中使用 log4j 嵌入 osgi felix 而 bundle 使用 log4j 时出现 ClassCastException

java - osgi启动包NoClassDefFoundError

java - 使用 Kotlin 从 fragment A 调用 fragment B 的方法

java - 如何将 pre-wrap 与 swing HTML 文本一起使用?

java - eclipse 链接 : No Persistence provider for EntityManager named

java - 访问其他osgi包中的静态资源?

maven-pax-provision + equinox : java. lang.Long 无法转换为 java.lang.String

java - 运行多个 Equinox OSGi 框架

java - Java 中 GUI 的资源