4

在“XPages Extension Library”一书中,第 12 章,第 409 页有一个 JDBC 连接文件的示例:

<jdbc>
    <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
    <url>jdbc:derby:${rcp.data}\derby\XPagesJDBC;create=true</url>
    <user>phil</user>
    <password>phil</password>
</jdbc>

文中还提到“注意在前面的示例中,在计算表达式 ${rcp.data} 中使用了配置属性rcp.data 。连接文件可以在其定义中利用计算属性。”

我的问题是:这些“计算属性”到底是什么?它们是如何使用的?我想将用户名和密码存储在其他地方,并使用如下方式引用它们:

<user>${SettingsBean.SQLUserName}</user>
<password>${SettingsBean.SQLPassword}</password>

但是,我无法让它发挥作用。这是我到目前为止所尝试的:

  1. 托管豆
  2. 变量解析器
  3. 资源包
  4. 直接通过 java.util.Properties 编写连接文件

1 到 3 在 XPage 中引用时有效,但在此文件中无效。如果连接文件属于“key=value”类型,则第 4 号将起作用。但是,java.util.Properties 不能用于不符合特定 DTD 的 XML 文件(如此文件)。并且不支持写入整个文件(在 WEB-INF 下)。

编辑:

一些附加信息:

  • 上面的内容来自 XPagesJDBC.nsf(来自 OpenNTF),而不是来自第 409 页中的图像。该页面上的文本似乎引用了此代码。
  • XPagesJDBC.nsf 在其他地方不包含单词“rcp.data”,至少它没有出现在搜索中。
  • 如果用户名是硬编码的,则 JDBC 连接可以完美运行。
  • SQL 错误消息看起来像这样:Unknown user: "${SettingsBean.SQLUserName}"这似乎暗示这个连接文件是“按原样”使用的。
4

2 回答 2

1

我猜“rcp”是对富客户端平台环境对象变量的引用,也许 .data 是指向 WEB-INF 目录的属性。

文档肯定在用这种无法解释的言论嘲弄我们。我在 Lotus Expeditor 文档http://publib.boulder.ibm.com/infocenter/ledoc/v6r2/index.jsp?topic=/com.ibm.rcp中看到了一些类似的东西(比如 ${rcp.*} ).tools.doc.admin/updatingclientconfigurationsusingmanualupdates.html - 检查一下。我在那里找到了这个小宝石:

Lotus Expeditor 平台使用系统属性 rcp.data 来识别工作空间的位置。

文件 f = 新文件(System.getProperty(“rcp.data”));

据我所知,这些变量字符串可以访问操作系统环境变量和 expeditor 属性变量。这些东西是如何移植到 domino/XPages 系统中的还没有记录,但是 Expeditor 团队中的许多人现在都加入了 XSP 团队。以下是我可以在 Expeditor 文档中找到的线索:

占位符 ${env.”system environment variable”} 用于指定 >system 环境变量的使用。

占位符 ${prop.”rcplauncher_property”} 用于指定使用来自 rcplauncher.properties 的属性。

因此,也许您可​​以将凭据放入 rcplauncher.properties 并通过 ${prop.*} 变量引用它们。

于 2013-08-06T17:38:12.673 回答
0

需要一个核心 XPages 运行时修复来解决这个问题。我所说的核心是指不能纯粹在 XPages 扩展库中修复的东西。因此,该修复程序仅在下一个完整的 Domino 版本中可用。

于 2015-09-07T14:03:05.920 回答