无重复性xpages生成序列

无重复性xpages生成序列,xpages,custom-controls,lotus-notes,Xpages,Custom Controls,Lotus Notes,我在xpages上有一个应用程序,它需要为用户提供一个句柄号,当两个用户试图同时保存时,我遇到了重复编号的问题。我尝试过使用FTSearch和UpdateIndex,但这两种方法都不可行,因为它们会导致xpage的速度变慢。我希望其他选项能够在不重复和不影响服务器性能的情况下生成此序列。这个问题与Domino更相关,与XPages没有什么特别之处。阅读IBM的一些建议,并将其作为代理实现。您可以在PostSave事件中调用它 还有更多的事情你必须忍受: 在群集或多副本环境中,只允许一台服务器

我在xpages上有一个应用程序,它需要为用户提供一个句柄号,当两个用户试图同时保存时,我遇到了重复编号的问题。我尝试过使用FTSearch和UpdateIndex,但这两种方法都不可行,因为它们会导致xpage的速度变慢。我希望其他选项能够在不重复和不影响服务器性能的情况下生成此序列。

这个问题与Domino更相关,与XPages没有什么特别之处。阅读IBM的一些建议,并将其作为代理实现。您可以在PostSave事件中调用它

还有更多的事情你必须忍受:

  • 在群集或多副本环境中,只允许一台服务器 授予序列号,是什么使其成为“单点故障”
  • 数字序列中的间隙会发生什么情况?允许吗
  • 在XPages中,您比代理有更多的选择,考虑使用servlet或RPC调用< /LI>
这个问题与Domino有关,与XPages没有什么特别之处。阅读IBM的一些建议,并将其作为代理实现。您可以在PostSave事件中调用它

还有更多的事情你必须忍受:

  • 在群集或多副本环境中,只允许一台服务器 授予序列号,是什么使其成为“单点故障”
  • 数字序列中的间隙会发生什么情况?允许吗
  • 在XPages中,您比代理有更多的选择,考虑使用servlet或RPC调用< /LI>
您需要区分:单服务器还是多服务器(假定您不使用Notes客户端)

单服务器: 创建一个托管bean,部署一个“应用程序托管bean”。加载时,bean从按顺序降序排序的视图中获取第一个条目。它会把那个留在记忆中。内部调用singleton的同步函数
getNextNumber()
为您提供了所需的值

多台服务器: a) 它们无法相互“看到”(远程复制):更改序列以包含服务器前缀。或:仅在复制后添加序列号

b) 他们在https上看到对方:
设计“应用程序管理bean”,它们在单个服务器上执行相同的操作,只是它们向“主服务器”询问编号。然后,您需要实现一种机制,允许在主机无响应时动态更改主机。某种协商协议。(群集环境中的常见挑战)。

您需要区分:单服务器还是多服务器(假定您不使用Notes客户端)

单服务器: 创建一个托管bean,部署一个“应用程序托管bean”。加载时,bean从按顺序降序排序的视图中获取第一个条目。它会把那个留在记忆中。内部调用singleton的同步函数
getNextNumber()
为您提供了所需的值

多台服务器: a) 它们无法相互“看到”(远程复制):更改序列以包含服务器前缀。或:仅在复制后添加序列号

b) 他们在https上看到对方:
设计“应用程序管理bean”,它们在单个服务器上执行相同的操作,只是它们向“主服务器”询问编号。然后,您需要实现一种机制,允许在主机无响应时动态更改主机。某种协商协议。(群集环境中的常见挑战)。

您需要在中心位置(服务器上的代理)进行数字处理。。。除此之外,你总是会有重复的数字…代理和XPages总是一个奇怪的组合。使用托管bean,而不是您需要在中心位置(服务器上的代理)执行数字处理。。。除此之外,你总是会有重复的数字…代理和XPages总是一个奇怪的组合。使用托管bean而不是Singleton模式非常麻烦,因为类装入器在XPages中“失控”。只是说,不适用于应用范围Bean我从来没有遇到过类加载器的问题,其中代码是在NSF内触发的,而不是通过预加载。如果使用Java和对象,那么延迟加载是比预加载更好的方法——我以前有一个initApp()方法,可以加载我可能需要的所有applicationScope变量,现在我倾向于只加载我需要的变量。因为这个方法应该只在保存时才需要(在提交到NSF时必须设置唯一的数字),所以我不知道有任何关于类加载器会导致问题的场景,因为它不需要预加载,只需要延迟加载。对于多服务器方法,一个选项是定义主服务器。对于其他服务器,如果主服务器不可用,则设置“临时服务器”+当前服务器+顺序,并使用该选项。然后使用代理,或者更好的是延迟加载代码,用适当的顺序(和相关文档)修复任何“临时”代码。序列号生成(单服务器或多服务器)不是Domino特有的问题。由于类装入器在XPages中“失控”,所以单例模式非常麻烦。只是说,不适用于应用范围Bean我从来没有遇到过类加载器的问题,其中代码是在NSF内触发的,而不是通过预加载。如果使用Java和对象,那么延迟加载是比预加载更好的方法——我以前有一个initApp()方法,可以加载我可能需要的所有applicationScope变量,现在我倾向于只加载我需要的变量。因为这个方法应该只在保存时才需要(在提交到NSF时必须设置唯一的数字),所以我不知道有任何关于类加载器会导致问题的场景,因为它不需要预加载,只需要延迟加载。对于多服务器方法,一个选项是定义主服务器。对于其他服务器,如果主服务器不可用,则设置“临时服务器”+当前服务器+顺序,并使用该选项。然后使用代理,或者更好的是延迟加载代码,用适当的