[英]Is java.util.concurrent.CountDownLatch.countDown() atomic?
[英]unsupported type 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)] 字段 counterService in component class com.xxx.xxx.xxx.CounterImpl has unsupported type 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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.