java - 不支持的类型 java.util.concurrent.atomic.AtomicReference
问题描述
我正在编写 OSGI 服务。启动服务后,我收到以下消息。请建议克服此问题。
@Component (service = Service.class, immediate = true)
public class ServiceImpl implements Service{
@Reference (name = "CounterService", policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.MANDATORY,
bind = "bindCounter", unbind = "unbindCounter", service = CounterService.class)
public static final AtomicReference<CounterService> myCounterService = new AtomicReference<>();
public void bindCService(CounterService counterService)
{
this.cacheService= cacheService;
}
public void unbindService(CounterService cacheService)
{
this.cacheService= null;
}
}
我在启动服务后收到了这条消息
-!MESSAGE [com.xxx.xxx.xxx.CounterImpl(29)] 组件类 com.xxx.xxx.xxx.CounterImpl 中的字段 counterService 具有不受支持的类型 java.util.concurrent.atomic.AtomicReference
解决方案
那么,为什么是 AtomicReference?您也不需要绑定和取消绑定服务。你似乎很困惑 :-) 你可能想看看视频或OSGi 启动器
对于动态情况,这是可行的:
@Component(immediate = true)
public class ServiceImpl implements Service {
@Reference
volatile CounterService myCounterService;
@Activate
void activate() {
...
}
}
如果CounterService
不是动态的,这是一个非常好的模式:
@Component(immediate = true)
public class ServiceImpl implements Service {
final CounterService myCounterService;
@Activate
public ServiceImpl( @Reference CounterService c ) {
this.myCounterService = c;
}
}
推荐阅读
- python - 独立移动 numpy 数组的行
- javascript - 如何在 Polymer 3 中设置元素的 innerHTML?
- sql - 如何在 BigQuery 中对多个 AND/OR 语句进行分组
- html - 即使在移动设备上也能强制桌面视图
- javascript - 将用户重定向到自定义 html 页面
- windows - 使用配对的 PC 将 iOS 模拟器上的文本复制并粘贴到 Mac
- excel - Excel VBA 宏将图片作为位图粘贴到 Word .dotm 文件
- html - Angular 6 DataTables - 表项在排序或搜索时出现/消失
- mongodb - 无法连接到作为服务运行的 MongoDB_4.0.0
- java - 需要帮助逐行读取文件