0

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

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

因此,据我所知,我可以执行以下操作。

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

还有其他方法吗?

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

4

2 回答 2

7

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

此外,请查看XSP Starter Kit中用于提供serverScope变量的技术。如果您的代码在 DOTS 任务(甚至是代理)中运行,它在不同的 Java 应用程序中运行,因此它不能直接与标准范围变量对话。该serverScope方法理论上允许您存储可以从 XPage 和触发任务访问的对象。这有助于使用 Mark 的技术,正如 Per 上面提到的,在任务运行时向用户传达进度:您只需将进度信息存储serverScopesessionScope.

于 2012-12-12T13:25:46.453 回答
0

一个解决方案是让代理对在数据库中保存新文档做出反应,而不是在您的应用程序中踢代理并使用线程(因为线程可能非常危险并且很容易杀死您的 http 任务)

您可以研究的另一件事是为什么您要执行的代码需要 2 分钟才能完成。代码是干什么用的?在其他数据库中做事或连接到其他非笔记资源?

于 2012-12-12T12:57:04.143 回答