前些时间我介绍过 Mastering XPages 这本书,这本书的内容非常好,只是由于语言的限制很多 Domino 开发人员还没有读这本书。现在本书的中文版已经发布了,所以我再次郑重推荐此书:

本书在架构方面包含了 XPages 的设计思想、JSF 的介绍(XPages 是基于 JSF 框架的);应用开发方面包含了所有控件的介绍、Domino 文档/视图数据源的应用;还涵盖了扩展性、国际化、安全性、性能等方面。

Mastering XPages 是现阶段关于 XPages 最全面、最权威的文档和资源,建议每一个 Domino 开发人员阅读

消息来源:Mastering XPages released – in Chinese

相关链接:豆瓣读书亚马逊京东当当china-pub

我们经常拷贝 Domino 服务器到别的机器上做 Demo,最近发现拷贝的 Domino 无法解析 Upgrade Pack 1 中的 OSGi 包,需要重新安装 Upgrade Pack 1。仔细研究了一下,问题出在 <Domino程序目录>\osgi\rcp\eclipse\links\extlib.link 这个文件上:

path=D\:/Lotus/Domino/osgi/extlib

这里面包含了绝对路径信息,将其修正后就没问题了。总结一下,Windows 平台 Domino 拷贝后需要做以下工作:

  1. 导入注册表信息
  2. 修改 Notes.ini 中的路径信息
  3. 修改 <Domino程序目录>\osgi\rcp\eclipse\links\extlib.link 文件中的路径信息

在调试 Java 代理的过程中,Domino 服务器给出的错误信息是这样的:

HTTP JVM: java.lang.NullPointerException
HTTP JVM: at JavaAgent.createYjPDF(Unknown Source)
HTTP JVM: at JavaAgent.NotesMain(Unknown Source)

这一堆的 Unknown Source 让人无从下手。还好这个问题很好解决:在代理属性中勾上如下选项即可(lib 库也是一样的)

结果如下,是不是舒服多了?

HTTP JVM: java.lang.NullPointerException
HTTP JVM: at JavaAgent.createYjPDF(JavaAgent.java:674)
HTTP JVM: at JavaAgent.NotesMain(JavaAgent.java:134)

自从 Domino Designer 切换到 Eclipse 平台之后,修改代理变得很麻烦:修改代码、按下 Ctrl+S……

然而实际上代理并没有保存,看到代理名左边的小星星了么!保存代码之后,还要再保存一下代理……这个设定实在是令人无语,无数次忘记保存代理本身导致看不到效果。

还好 8.5.2 引入了一个选项解决这个问题:

XPages 为我们带来了新的开发体验,但其服务器端组件树、服务器端状态存储等特性会消耗大量的内存。Domino 8.5.2 版之后,为 HTTP JVM 分配的内存默认为64M,如果使用了较多的 XPages 的话,一般来说这个默认值是不够的。可以通过以下 Notes.ini 参数调整(增加到256M):

HTTPJVMMaxHeapSize=256M
HTTPJVMMaxHeapSizeSet=1

如果使用了较多的XPages,通常来说32位操作系统推荐设置为256M,64位操作系统+32位Domino为1024M,64位操作系统+64位Domino为物理内存的1/4。当然具体环境请酌情调整。