Java JBoss使用哪个UUID/GUID生成器

Java JBoss使用哪个UUID/GUID生成器,java,jboss,guid,uuid,Java,Jboss,Guid,Uuid,我想为多个物理上分离的数据库生成唯一的ID作为密钥 我使用JBoss,我想知道哪个implementation/library是正确的选择。我知道java.util.UUID会很简单,而且可能很好。我只是想知道这是否是JBoss的发展方向 有什么提示吗 看起来可以使用以下代码调用一个: InitialContext ctx = new InitialContext(); KeyGeneratorFactory kgf = (KeyGeneratorFactory) ctx.looku

我想为多个物理上分离的数据库生成唯一的ID作为密钥

我使用JBoss,我想知道哪个implementation/library是正确的选择。我知道
java.util.UUID
会很简单,而且可能很好。我只是想知道这是否是JBoss的发展方向

有什么提示吗

看起来可以使用以下代码调用一个:

   InitialContext ctx = new InitialContext();
   KeyGeneratorFactory kgf = (KeyGeneratorFactory) ctx.lookup("UUIDKeyGeneratorFactory");
   KeyGenerator kg = kgf.getKeyGenerator();
   Object uuid = kg.generateKey();

你所说的推荐是什么意思

UUID是一种标准。有不同种类的UUID(也被定义为标准)。使用哪个库或实现并不重要,只要生成的键符合标准(换句话说,只要它有效)

我认为UUID的JDK实现相当可靠。它是JavaAPI的一部分,很简单,我看不出有什么理由不使用它。事实上,这就是我在EJB3.0应用程序(在JBoss上运行)中使用的内容


JBoss提供的UUID生成器是在3.2版中添加的(根据另一个答案中的链接)。之所以包含这个生成器,可能是因为JBoss3.2发布时,JDK没有提供java 5中引入的
java.util.UUID
类。

Andre Rodrigues的答案是正确的

您应该研究UUID的版本(类型)。这本书解释得很好

仅生成版本3(基于名称,通过方法
nameuidfrombytes(byte[]name)
)和版本4(完全随机,通过方法
randomUUID()
)UUID。Sun/Oracle声称他们提供了一个“加密强大的伪随机数生成器”。这意味着您不应该有任何真正的碰撞机会,即使创建了数十亿或万亿的值


出于安全原因,Java不会生成使用网络接口MAC地址加上当前日期时间的原始版本。理论上,这个版本比版本4更不可能发生碰撞。事实上,碰撞几乎是不可能的。如果这是您想要的UUID类型,您可以通过调用另一个库来创建一个UUID。如今,大多数操作系统都附带了UUID生成器,如in和OS X。然后将位或十六进制字符串传递给java.util.UUID上的一个构造函数或工厂方法。

Yes也找到了该方法。但是这是JBOSS推荐的方式吗?