Создание случайного числа или случайной строки (UUID) всегда является проблемой. Даже обычный java.util.Random
- not perfect. Вы уже исключили использование баз данных, которые обеспечили бы случайность в JVM.
Это проблема на подобный на вызов, с которой сталкиваются веб-контейнером для генерировать уникальный идентификатор сеанса. Уникальность гарантируется, если задействована только одна JVM. Но в реальном мире это вряд ли так. Типичное веб-приложение развертывается в кластере серверов. На основе идентификатора сеанса балансировщик нагрузки пересылает запросы на соответствующий сервер.
Поскольку уникальность идентификатора сессии не гарантируется через JVM, каждый сервер добавляет уникальный идентификатор (например, .node1) к идентификатору сессии, который гарантирует, что даже если два сервера генерировать тот же идентификатор сессии, уникальность будет сохраненный добавленной строкой.
Расширение это в вашем случае, вы всегда можете поставить JVM конкретный идентификатор в Ид, поэтому сгенерированный идентификатор может выглядеть,
- 0x-111-111-PX-2013-11-11 -00001-M1
- 0x-111-111-PX-2013-11-11-00001-M2
Вы можете поставить M1/M2 в любом месте строки.
Мне не известны никакие компульсии (на идентификаторах), которые могут возникнуть у вас, но это всего лишь мысль.
дополнительное описание, необходимое для кого-то, чтобы помочь. Его непонятно, как вы генерируете в настоящее время и как вы хотите продолжить. –
Мне нужно перекрестное jvm .... Что это значит на разных машинах или разных версиях jvm? Вам нужно генерировать уникальный идентификатор с разных машин ????? – dbw
ye, cross jvm означает генерировать уникальный идентификатор от разных машин. Короче говоря, мое приложение может быть развернуто на другом хосте. – MagiX