所以我有一些Java代码需要一些时间才能完成(大约2分钟)。我无能为力。
但是我想知道如何在XPage UI中最好地解决这个问题,这样用户可能仍然需要等待,但在运行时有更多的控制/交互(不仅仅是旋转轮)。
所以从我所看到的我可以做到以下几点。
还有其他方法吗?
如果你在XPage中创建了线程,是否会在服务器端引起任何问题?我是否必须避免在Java类中使用Notes对象?
答案 0 :(得分:7)
我建议使用OSGi Tasklet服务,a.k.a。DOTS。这种方法允许Java任务被调度或绑定到事件,就像代理一样,但是比代理更有效地执行。可能与您的需求最相关的是通过控制台触发DOTS任务的附加功能,这将允许您的XPage代码仅通过session
对象发出远程控制台命令来启动Java代码。
此外,请查看XSP Starter Kit中使用的技术,以提供serverScope
变量。如果您的代码在DOTS任务(甚至代理)中运行,则它在不同的Java应用程序中运行,因此它无法直接与标准范围变量通信。从理论上讲,serverScope
方法可以存储可以从XPage和触发任务访问的对象。这有助于使用Mark的技术,如Per所述,在任务运行时向用户传达进度:您只需将进度信息存储在serverScope
而不是sessionScope
。 / p>
答案 1 :(得分:0)
解决方案是让代理对在数据库中保存新文档做出反应,而不是在应用程序中使用代理并使用线程(因为线程可能非常危险并且很容易终止您的http任务)
您可以研究的另一件事是您要执行的代码需要2分钟才能完成。代码是什么?在其他数据库中做事或连接到其他非笔记资源?