在XPage中长期运行Java代码的最佳方法是什么?

时间:2012-12-12 10:58:28

标签: xpages

所以我有一些Java代码需要一些时间才能完成(大约2分钟)。我无能为力。

但是我想知道如何在XPage UI中最好地解决这个问题,这样用户可能仍然需要等待,但在运行时有更多的控制/交互(不仅仅是旋转轮)。

所以从我所看到的我可以做到以下几点。

  • 在XPage中调用的Java类包含在一个线程中。
  • Java Agent在线程中从XPage调用。
  • 从XPage调用Java代理,但等待更新文档。
  • Eclipse插件(在客户端中为For)已激活。不知道它会如何与XPage对话(通过文档?)。

还有其他方法吗?

如果你在XPage中创建了线程,是否会在服务器端引起任何问题?我是否必须避免在Java类中使用Notes对象?

2 个答案:

答案 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分钟才能完成。代码是什么?在其他数据库中做事或连接到其他非笔记资源?