在 XPage 中从外部 nsf 导入服务器端 javascript 脚本库

Import server side javascript script library from external nsf in an XPage

我正在尝试找到一种从外部 nsf 应用程序(在相同或另一个 domino 服务器中)引用服务器端 jss 文件的方法。

我访问了一个 xpage,然后访问了它的资源 属性。我选择导入一个脚本库,然后在弹出窗口 window 中,我在下拉列表中选择了 "server side",最后我试图猜测一个 url 可以工作。

我知道它不像客户端那样工作 javascript 因为 csjs 只是浏览器解析的文本。但我不明白为什么 xpage 不能从 url 检索 jss 然后加载它并像本地一样解析它...

是否可以从另一个nsf加载一个jss?

我认为在 NSF 内这是不可能的。我认为问题在于您将它与客户端 JavaScript 脚本库的过程进行比较,而不是与服务器端资源进行比较,因此认为它比技术上需要的更简单。您不能从另一个 NSF 加载 Java class,也不能(轻松地)加载 XPage 或自定义控件。每个 NSF 都在自己的 JVM 中运行,因此可能还需要启动外部数据库的 XPages 运行时来加载 SSJS 脚本库。 SSJS 脚本库可以引用其他库、Java classes、托管 bean、变量等,检索这些库将失败,因为 SSJS 脚本库将从数据库 A 中以纯文本形式检索(记住它是仅在运行时编写代码)并在数据库 B 的上下文中进行解析。我认为它的复杂程度足以使其几乎无法支持,尤其是当它可以在自 8.5.2 以来的插件中完成时,这将更加独立.

我已经尝试通过后端 HTTP 会话访问资源,但您仍然需要对服务器进行身份验证 - 它不会自动传递登录凭据或使用服务器访问权限。所以这可能也是一个必须(以某种方式)克服的障碍。

我相信 Jesse Gallagher 已经设法找到一种通过 OpenNTF Domino API 从另一个数据库加载 XPage 或自定义控件的方法,但我认为这不是推荐的方法。我怀疑他用它来尝试加载 SSJS 库。您可能还会遇到问题,因为代码位于单独的 JVM 中。

基本上,要从多个 NSF 访问同一个 SSJS,它需要位于 NSF 之上的服务器层次结构级别,因此在 OSGi 插件中。但如果它是供您自己使用的代码,到那时,您很可能会编写 Java 而不是 SSJS。

此时最好的选择是复制粘贴或从模板继承。