在CQ中生成自动增量唯一编号的策略

时间:2013-08-31 19:03:05

标签: cq5

我需要以编程方式创建CQ页面。但挑战在于页面名称/ uri应该是自动生成的字符串+唯一编号的组合(例如PT2000,PT2001)。

有人能告诉我一种在CQ中生成autoincrement-id / constant的方法,即使有多个并发请求,id也是唯一的吗?

4 个答案:

答案 0 :(得分:0)

使用为您提供ID并在易失性实例变量中管理计数器的服务,以确保一个线程的状态更改立即传递给所有其他线程。

只要您可以保证您的实现在单个作者节点上运行,这应该可以解决问题。在集群场景中,您还必须关心仅在一个节点上执行它。

答案 1 :(得分:0)

我建议创建一个在存储库中某处管理其计数器的服务,并且还充当jcr EventListener。服务应该在cq:Page类型的父节点上侦听NODE_ADDED事件,并且一旦调用onEvent,它就可以在该点分配唯一的id。您希望明显使用同步,以便对onEvent()的重叠调用不会使用相同的ID。

答案 2 :(得分:0)

您可以使用GUID,图形用户ID,生成的ID具有很大的唯一性概率。 请参阅wiki参考http://en.wikipedia.org/wiki/Globally_unique_identifier 并创建GUID: Create a GUID in Java

这将使您更轻松地验证号码是否唯一,因此只需生成ID并使用该ID创建页面。

答案 3 :(得分:0)

AEM不会自动将数字附加到相同的名称页面吗?

如果没有,那么可能会失败,此时你会重新开始下一个数字。在这种情况下,最好的猜测就足够了。