2012-04-30 25 views
0

我刚刚开始使用Lotus Notes的Web服务。我希望能够做的是创建一个生成序列号的Web服务。生成数字的代码是基于我们在数据库中使用了一段时间的现有代码(只是直接的莲花脚本,没有Web服务)。基本上有一个存储下一个号码的文件,下一个号码被返回并更新为下一次呼叫保存冲突被检测到,并且如果在保存号码时出现问题,则再次尝试号码。Web服务是按顺序还是并行处理?

我想我可能会使用网络服务来生成号码。那么Web服务是按顺序还是并行处理?因为如果他们是连续的,那么我就不需要处理两个人试图同时保存这个号码。

+0

这将取决于平台。什么是Web服务运行? Apache的?使用Java?什么框架?通常,Web服务调用可以并行处理。 –

回答

2

Web服务是一种让两个系统彼此通信的方式,它们不会有共同的语言。

例如连接到.Net服务器的LotusScript代理。

在Domino上创建Web服务提供者(服务器)时,您可以使用LotusScript或Java对其进行编码。然后,服务器为消费者(客户端)提供一个WSDL文件,以编写与该Web服务交谈所需的代码。

本教程应该更好地解释它给你:

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Creating_your_first_Web_Service_provider_and_consumer_in_LotusScript_and_Java.

现在作为多米诺。运行Web服务以便从服务器请求它们。但是没有控制权要说“Webservice X完成之前不要启动”。

您也可以将此代码编码到应用程序中,但运行其他用户的内存/性能问题死锁的严重风险,除非您反对。

也可以将Domino服务器设置为不能并行运行Web服务/代理。但是你也冒同样的风险。

如果它是一个唯一的ID,那么你可以通过从Web服务创建的文档的UNID。或者你可以通过评估来使用@UNIQUE,但两者都只返回文本。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_UNIQUE.html

+0

谢谢西蒙。总之,我仍然需要检查两个人没有同时更新下一个号码文件吗? –

+1

是的,这将与Web服务组件分开。以下wiki文章将创建顺序编号。 http://www-10.lotus.com/ldd/ddwiki.nsf/dx/sequential-numbering.htm –

+0

只是一个想法,文件锁定工作的Domino Web服务?当R6出现时,我并没有留下太深的印象,但它可能已经改进了,因为R8.5 – booyaa

0

是Web服务将在parrallel运行。但是既然你写过你的代码处理保存冲突,你不应该有问题。
在2个用户的标准笔记调用中:第一次获取文档,第二次获取文档并保存(快速两次),然后首先获得保存冲突。 总而言之,它是平行的,但它不是问题。

0

我会认为他们默认情况下会按顺序运行,因为异步Web代理处于关闭状态,除非您打开它。因此,尽管如果您只通过Web服务分配数字并且您没有更改异步设置,那么按顺序执行“安全”操作是一种很好的设计模式,但您仍然可以使用

1

从Lotus Designer文档:

要在服务器上启用并发Web服务,必须在该服务器上启用并发Web代理。打开您要编辑的服务器文档。单击Internet协议 - Domino Web引擎选项卡。同时启用运行Web代理。

并发Web服务调用的最大数量由“最大并发代理”设置决定。来自Lotus Administration文档:

最大并发代理数指定允许并发运行的代理程序数。有效值为1到10.默认值为白天1和夜间2。启用更多并发代理可以减轻负载过重的代理管理器,但也会减少可用于运行其他服务器任务的资源。

的Lotus Notes Domino的版本8.5.x

+0

如果在Web上调用WS,则参数为** NOT **最大并发代理**但BUT ** Internel协议/ HTTP基础知识中的“Number active threads” –

0

有避免同步考虑一个简单的解决方案。

您应该使用@Unique生成一个临时编号,然后使用排程代理按文档创建顺序分配连续编号,并使用正确构成的视图仅选择未处理的文档。如果您不关心创建文档的顺序,只关心所有数字都是唯一的,则视图不是必需的,您可以在未处理的文档上触发代理。

临时号码可以暂时用作参考,直到分配了正确的序号。

当计划的代理运行时,它应该向作者确认正确的参考号。

0

或者,您可以导出到DXL并获取标签的sequence =属性。不过,这只适用于访问数据库的单个实例。而DXL导出/ XML导入是一个巨大的开销。

不幸的是,我看不到一种方法可以轻松地从LotusScript NotesDocument获取笔记的序列号。如果您有一个有效的支持合同,您可以打开一份问题管理报告来获取软件增强请求(“APAR”,用IBM的话来说,尽管我不知道它的缩写是什么)。

祝你好运!

相关问题