在 OSGI 的 Reference 对象中调用绑定方法后获取 Null 值

问题描述

在我的项目中,我有一个 OSGI 包。在这个包中,我有 osgi 引用和绑定和解除绑定方法。当我重新启动我的服务时,首先调用解除绑定方法,将引用对象设置为 null,然后调用绑定方法为引用对象设置值。

我的问题是在使用该引用对象时,它是 Null。因此抛出空指针异常。

我在这里做错了什么?

@Component (service = Service.class,immediate = true)
public class ServiceImpl implements Service{

@Reference (name = "CacheService",policy = ReferencePolicy.DYNAMIC,cardinality = 
ReferenceCardinality.MANDATORY,bind = "bindCacheService",unbind = "unbindCacheService")
private CacheService cacheService;

public void bindCacheService(CacheService cacheService)
{     
    this.cacheService= cacheService;
}

public void unbindCacheService(CacheService cacheService)
{     
    this.cacheService= null;
}

public TransformationPojo  getMetadata() throws Exception
{
  
    LOGGER.debug("TransformerIMPL TransformationMetadata getMetadata invoked {}",cacheService);
    TransformationPojo transformationPojo = cacheService.getTransCache();
    return transformationPojo.getMetadata();
}

}

在运行此代码时,我从另一个类调用 getMetadata() 时出现空指针异常。

2021-06-27T07:35:21.310+0200 | DEBUG | nt-Grouper-Task-10.216.200.229_6 | b.r.e.p.c.u.a.TransformerImpl | transformer.TransformerImpl  100 | 261 - com.common.utils.transformer - 1.30.0.SNAPSHOT | TransformerIMPL TransformationMetadata getMetadata invoked com.common.utils.cacheclient.metadatapojo.TransformationMetadata@765bea96
2021-06-27T07:35:21.310+0200 | DEBUG | nt-Grouper-Task-10.216.200.229_6 | b.r.e.p.c.u.a.TransformerImpl | transformer.TransformerImpl  100 | 261 - com.common.utils.transformer - 1.30.0.SNAPSHOT | TransformerIMPL TransformationMetadata getMetadata invoked null
2021-06-27T07:35:21.311+0200 | ERROR | nt-Grouper-Task-10.216.200.229_6 | .p.c.i.p.g.i.EventGroupingWorker | ice.internal.EventGroupingWorker  162 | 257 - com.common.integration.processors.groupingservice - 1.30.0.SNAPSHOT | Exception in querying the data for grouping. skipping the current query.
java.lang.NullPointerException: null
at com.common.utils.transformer.TransformerImpl.getMetadata(TransformerImpl.java:101)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)