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

时间:2015-02-03 11:40:43

标签: xpages lotus-notes lotus-domino serverside-javascript

我试图找到一种方法从外部nsf应用程序(在同一个或另一个多米诺骨牌服务器中)引用服务器端jss文件。

我去了一个xpage然后去了它的资源属性。我选择导入一个脚本库,然后在弹出窗口中我选择了下拉列表中的“服务器端”,最后我试着猜出一个可行的URL。

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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