概要:我正在开发一个持久化的Java Web应用程序,需要确保我持久化的所有资源都具有全局唯一标识符,以防止重复。
细节:
- 我没有使用RDBMS,因此我没有任何高级序列生成器(如Oracle提供的)
- 最好是快速的,最好全部在内存中 - 我不想打开文件并递增某个值
- 它需要是线程安全的(我预计一次只有一个JVM需要生成ID)
- 必须在JVM的实例之间保持一致。如果服务器关闭并重新启动,则ID生成器不应重新生成先前实例化中生成的相同ID(或者至少机会非常小 - 我预计有许多百万个永久资源)
- 我已经看到了EJB唯一ID模式文章中的示例。它们对我不起作用(我不想仅仅依赖System.currentTimeMillis(),因为我们将每毫秒持久化多个资源)。
- 我已经查看了此问题中提出的答案。我对它们的担忧是,随着时间的推移,我会得到重复的ID几率有多大?我被使用java.util.UUID生成UUID的建议所吸引,但是再次强调,获取重复的机会必须非常小。
- 我正在使用JDK6