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

Her*_*rty 0 xpages

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

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

所以我可以看到我可以做到以下几点.

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

还有其他方法吗?

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

Tim*_*ony 7

我建议使用OSGi Tasklet服务,即DOTS.这种方法允许Java任务被调度或绑定到事件,就像代理一样,但是比代理更有效地执行.也许与您的需求最相关的是通过控制台触发DOTS任务的附加功能,这将允许您的XPage代码仅通过通过session对象发出远程控制台命令来启动Java代码.

此外,请查看XSP入门工具包中使用的技术以提供serverScope变量.如果您的代码在DOTS任务(甚至是代理)中运行,则它在不同的Java应用程序中运行,因此它无法直接与标准范围变量通信.serverScope理论上,该方法允许您存储可从XPage和触发任务访问的对象.这可以帮助使用Mark的技术,如Per所述,在任务运行时向用户传达进度:你只是存储进度信息serverScope而不是sessionScope.