IPOJO组件未正确公开服务

时间:2018-07-17 17:01:14

标签: apache-karaf apache-felix ipojo

我有类似ipojo的组件

@Component(immediate = true)
@Provides
public class MyComponent implements MyService
{

@Override
    public boolean islock()
    {
        return true;
    }

}

当我使用以下命令在karaf中部署

bundle:install -s mvn:com.my.osgi/mycomponent/0.0.1

如果我在karaf控制台上执行service:list,则显示如下输出

[org.apache.felix.ipojo.Factory] 
    -------------------------------- 
     component.class = com.my.osgi.mycomponent 
     component.description = factory name="com.my.osgi.mycomponent" 
bundle="77" state="valid" implementation-class="com.my.osgi.mycomponent" 
            requiredhandlers list="[org.apache.felix.ipojo:properties, 
org.apache.felix.ipojo:callback, org.apache.felix.ipojo:provides, 
org.apache.felix.ipojo:architect 
    ure]" 
            missinghandlers list="[]" 
            provides specification="com.my.osgi.mycomponent" 
            inherited interfaces="[com.my.osgi.mycomponent]" 
superclasses="[]" 
     component.providedServiceSpecifications = [com.my.osgi.mycomponent] 
     factory.name = com.my.osgi.mycomponent 
     factory.state = 1 
     service.bundleid = 77 
     service.id = 153 
     service.pid = com.my.osgi.mycomponent 
     service.scope = singleton 

但是我期望如下所示,

[com.my.osgi.mycomponent] 
    ----------------------------------------------------- 
    instance.name = mycomponent.3c2c91a5-4c28-46c3-a08e-1470192ef353 
     service.bundleid = 76 
     service.factoryPid = com.my.osgi.mycomponent 
     service.id = 397 
     service.pid = 
com.my.osgi.mycomponent.3c2c91a5-4c28-46c3-a08e-1470192ef353 
     service.scope = bundle 

我做错了什么?我正在用Maven进行构建。

编辑: 观察到,此捆绑包在一个更大的应用程序中运行,该应用程序在何时获得部署日志

2018-07-17T12:03:50,011 | DEBUG | [iPOJO] pool-1-thread-1 | my-component | 38 - com.my.osgi.my-component  - 1.0.3 | ServiceEvent REGISTERED - [org.apache.felix.ipojo.architecture.Architecture] - com.my.osgi.my-component
2018-07-17T12:03:50,021 | DEBUG | [iPOJO] pool-1-thread-1 | my-component | 38 - com.my.osgi.my-component  - 1.0.3 | ServiceEvent REGISTERED - [com.my.osgi.my-component]                         - com.my.osgi.my-component
2018-07-17T12:03:50,021 | DEBUG | [iPOJO] pool-1-thread-1 | my-component | 38 - com.my.osgi.my-component  - 1.0.3 | ServiceEvent MODIFIED -   [com.my.osgi.my-component]                         - com.my.osgi.my-component
2018-07-17T12:03:50,021 | DEBUG | [iPOJO] pool-1-thread-1 | my-component | 38 - com.my.osgi.my-component  - 1.0.3 | ServiceEvent MODIFIED -   [com.my.osgi.my-component]                         - com.my.osgi.my-component
2018-07-17T12:03:50,021 | DEBUG | [iPOJO] pool-1-thread-1 | my-component | 38 - com.my.osgi.my-component  - 1.0.3 | ServiceEvent MODIFIED -   [com.my.osgi.my-component]                         - com.my.osgi.my-component
2018-07-17T12:03:50,021 | DEBUG | [iPOJO] pool-1-thread-1 | my-component | 38 - com.my.osgi.my-component  - 1.0.3 | ServiceEvent REGISTERED - [org.apache.felix.ipojo.Factory] - com.my.osgi.my-component

但就我而言,只有两行

2018-07-17T11:45:43,624 | DEBUG | [iPOJO] pool-1-thread-1 | my-component  | 11 - com.my.osgi.my-component - 2.0.4.SNAPSHOT | ServiceEvent REGISTERED - [org.apache.felix.ipojo.extender.TypeDeclaration] - com.my.osgi.my-component
2018-07-17T11:45:43,654 | DEBUG | [iPOJO] pool-1-thread-1 | my-component  | 11 - com.my.osgi.my-component - 2.0.4.SNAPSHOT | ServiceEvent REGISTERED - [org.apache.felix.ipojo.Factory] - com.my.osgi.my-component  

那么,这种架构在做什么以及被修改了什么?