我们正在创建一个带有 MySQL 后端的 XPages 应用程序。应用程序将被多个客户使用。每个都有自己的 NSF 数据库和相应的 MySQL 数据库。每个客户都有自己的 MySQL 用户名。我们正在使用扩展库 JDBC 组件 (ConnectionManager
)。
我们计划将用户名和密码存储在 NotesDocument
中。这样,NSF 的设计可以很容易地从 NTF 模板更新,而不会影响此数据。但是,ConnectionManager 组件和 @GetJdbcConnection
SSJS 函数都从存储在 WEB-INF/jdbc 文件夹中的文件中读取用户名、密码和其他连接信息。当 NSF 设计更新时,存储在那里的文件将被覆盖,从而丢失客户特定的信息。
似乎没有办法使这些文件动态化(WEB-INF 根据规范是只读的)或在其中包含动态元素(参见我的 previous question)。
我们可以在 ConnectionManager
中使用动态 JDBC URL,但是 ExtLib 书中警告不要这样做。看起来我们然后失去了连接池。此外,@GetJdbcConnection
函数不接受 JDBC URL。
那么,存储特定于 NSF 的 JDBC 连接信息的最佳方式是什么?
编辑:已解决
我创建了 jdbcConnectionManager 组件的子类。此处详细介绍了该过程:http://lazynotesguy.net/blog/2013/08/09/subclassing-an-extlib-component/
最佳答案
最好是继承 Extlib 类。由于提供了 extlib 源,因此应该不会太难。 另一种选择是使用版本控制系统为每个客户维护仅在该配置文件中有所不同的分支
关于jdbc - 使用动态 JDBC 用户名和密码的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744290/