Какой генератор UUID / GUID использовать с JBoss - PullRequest
2 голосов
/ 30 декабря 2011

Я хочу генерировать уникальные идентификаторы в качестве ключа для нескольких физически разделенных баз данных.

Я использую JBoss, и мне интересно, какая реализация / библиотека - путь. Я знаю java.util.UUID было бы просто и, вероятно, хорошо. Я просто хотел бы знать, так ли это в JBoss.

Есть намеки?

Ответы [ 3 ]

2 голосов
/ 30 декабря 2011

Похоже, что в JBoss есть генератор UUID, который можно вызвать с помощью этого кода:

   InitialContext ctx = new InitialContext();
   KeyGeneratorFactory kgf = (KeyGeneratorFactory) ctx.lookup("UUIDKeyGeneratorFactory");
   KeyGenerator kg = kgf.getKeyGenerator();
   Object uuid = kg.generateKey();
1 голос
/ 06 января 2012

Что вы подразумеваете под рекомендуемым?

UUID является стандартом. Существуют различные виды UUID (которые также определены как стандарты). Не имеет значения, какую библиотеку или реализацию вы используете, если сгенерированные ключи следуют стандарту (другими словами, пока он работает).

Я думаю, что реализация UUID на JDK довольно надежна. Это часть Java API, это просто, я не вижу причин, чтобы не использовать его. Фактически это то, что я использую в приложении EJB 3.0 (которое работает на JBoss).

Генератор UUID, предоставленный JBoss AS, был добавлен в версии 3.2 (по ссылке в другом ответе). Этот генератор был включен, вероятно, потому что, когда был выпущен JBoss 3.2, JDK не предоставил класс java.util.UUID, который был представлен в Java 5.

0 голосов
/ 13 ноября 2013

Ответ Андре Родригеса правильный.

Вам следует изучить версии (типы) UUID.Страница Википедии хорошо объясняет.

Класс java.util.UUID генерирует только версии 3 (на основе имени, через метод nameUUIDFromBytes(byte[] name)).и 4 (совершенно случайно, с помощью метода randomUUID()) UUID.Sun / Oracle утверждают, что они предоставляют «криптографически сильный генератор псевдослучайных чисел».Это означает, что у вас не должно быть реальной вероятности коллизий, даже если создаются миллиарды или триллионы значений.

По соображениям безопасности Java не создает оригинальную версию, в которой используется MAC-адрес сетевого интерфейса плюс текущая дата и время.,Теоретически, в этой версии вероятность столкновений еще меньше, чем в версии 4. Действительно, столкновения практически невозможны.Если вам нужен именно такой UUID, вы можете создать его, вызвав другую библиотеку.Большинство операционных систем в настоящее время поставляются в комплекте с генератором UUID, например uuidgen в BSD и OS X. Затем передайте биты или шестнадцатеричную строку одному из конструкторов или фабричных методов, найденных вjava.util.UUID.

...