Glassfish3.1.2.2にJavaEEアプリケーションがあります
そしてread()によって、次のコードでConcurrentModificationExceptionを取得します。
private Set<MonitoredService> connectedServices = new HashSet<MonitoredService>();
@Override @Lock(LockType.WRITE)
public void addConnectedService(MonitoredService service) {
if (!connectedServices.contains(service)) {
connectedServices.add(service);
}
}
@Override @Lock(LockType.READ)
public Set<MonitoredService> getConnectedServices() {
return Collections.unmodifiableSet(new HashSet<MonitoredService>(connectedServices));
}
Lockアノテーションは、セットへの同期アクセスを考慮していると思いますか?