Некоторые поставщики Java EE имеют решения с кэш-памятью с нарушением (например, WebSphere's Object Grid), и вы уже определили предложения сторонних производителей, но я не верю, что существует переносимый стандарт.
Что не так с решением БД? Понятно, что блокировка будет необходима, так почему бы не уйти в БД. Я предполагаю, что если вам действительно нужны истинные инкрементные значения, пропущенные значения и т. Д., То будут важны транзакционные отношения с другими значениями базы данных, поэтому используйте БД.
Если вы можете ослабить потребность в абсолютных последовательных значениях (т. Е. Разрешить пропуски), то вы можете разделить наборы чисел и тем самым значительно уменьшить конкуренцию. Если вы действительно нуждаетесь в последовательных значениях, без пробелов, то вы покупаете необходимость некоторой степени блокировки между экземплярами - вы не можете позволить второму «потоку» получить новый порядковый номер, пока не «зафиксируете» использование текущий. Если вы можете позволить себе потерять нечетный порядковый номер, то вы делаете намного лучше. Или, если вы можете независимые схемы нумерации между экземплярами, вы находитесь в гораздо лучшем положении. Например, имена ваших серверов a, b, c ... имеют идентификаторы a001, a002, b001, c001, c002 и т. Д.