Резюме: Разработвам устойчиво Java уеб приложение и трябва да се уверя, че всички ресурси, които поддържам, имат глобални уникални идентификатори, за да предотвратя дублиране.
Дребният шрифт:
- Не използвам RDBMS, така че нямам фантастични генератори на последователности (като този, предоставен от Oracle)
- Бих искал да е бързо, за предпочитане всичко в паметта - предпочитам да не се налага да отварям файл и да увеличавам някаква стойност
- Трябва да е безопасен за нишки (предвиждам, че само една JVM наведнъж ще трябва да генерира идентификатори)
- Трябва да има последователност между екземплярите на JVM. Ако сървърът се изключи и стартира, генераторът на идентификатори не трябва да генерира отново същите идентификатори, които е генерирал в предишни екземпляри (или поне шансът трябва да е наистина, наистина малък - очаквам много милиони предварително запазени ресурси)
- Виждал съм примерите в статията за модел на уникален идентификатор на EJB. Те няма да работят за мен (предпочитам да не разчитам единствено на System.currentTimeMillis(), защото ще поддържаме множество ресурси на милисекунда).
- Разгледах отговорите, предложени в този въпрос. Загрижеността ми за тях е какъв е шансът да получа дубликат на лична карта след време? Заинтригуван съм от предложението да използвам java .util.UUID за UUID, но отново, шансовете за дубликат трябва да бъде безкрайно малък.
- Използвам JDK6