Я пытался сгенерировать и уникальный длинный идентификатор.Я генерирую это в сервисе, это сервис:
package x.y.z;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.ejb.Startup;
import javax.ejb.Stateless;
import x.y.NiceObject;
@Stateless
@Startup
public class Transacciones {
private long idTransaccion = 0l;
static Map<Long, NiceObject> mapaTransacciones = new ConcurrentHashMap<>();
public Transacciones() {
}
public long getIdTransaccion() {
++idTransaccion;
return idTransaccion;
}
public void setIdTransaccion(long idTransaccion) {
idTransaccion = idTransaccion;
}
public Map<Long, NiceObject> getMapaTransacciones() {
return mapaTransacciones;
}
public void setMapaTransacciones(Map<Long, NiceObject> mapaTransacciones) {
this.mapaTransacciones = mapaTransacciones;
}
}
И у меня есть управляемый компонент, откуда я вызываю этот сервис и пытаюсь использовать этот идентификатор.Это метод bean-компонента:
@EJB
private Transacciones transaccionService;
public String capture() {
ExecutorService service = Executors.newFixedThreadPool(2);
try {
long idTransaccion =
transaccionService.getIdTransaccion();
method1(idTransaccion);
service.submit(() -> {
method2(idTransaccion);
});
} finally {
if (service != null)
service.shutdown();
}
return null;
}
Проблема в том, что в каком-то месте во времени он выходит из строя;потому что я надеюсь получить Id генерирования следующим образом:
1,2,3,4,5,6.......
но я получаю:
1,2,1,3,4,2,...
В этой строке:
long idTransaccion = transaccionService.getIdTransaccion();
В чем проблема,Remenber У меня есть управляемый компонент SessionScope, откуда я вызываю этот метод в EJB.
За любую помощь Заранее спасибо!