【发布时间】:2015-08-26 17:23:53
【问题描述】:
我是 Notes/Xpages 技术的初学者,我正面临一个概念问题:
我有一个在 Domino 服务器上运行的 XPages 应用程序。
我们正在尝试使用 Java 和 JSF 的可能性使我们的开发实践现代化,我想在我们的应用程序中引入 MVC 模式。
我会尽量总结清楚:
让我们考虑一个多米诺文档的全局锁定系统。 我有一个代表文档详细信息的 xsp:document_details.xsp。 此表单使用控制器类 DocumentDetailsAction.java。此类也是具有视图范围的托管 bean。
所以当用户点击我的 xsp 上的“编辑”按钮时: boolean DocumentDetailsAction.isDocumentLocked(String unid) 被调用。
如果为 false,则文档更改为编辑模式等。 如果为 true,则添加一条消息以通知用户文档已锁定。
使用 MVC 模式,方法 isDocumentLocked 实例化一个业务服务类: DocumentLockBO,其中包含与锁定系统有关的业务逻辑。 这个业务类有一个 DocumentLockDAO 实例作为属性。该属性在构造函数中实例化。
在我的 DAO 中,我在构造函数中实例化了一个 Domino 数据库对象并将其设置为我的类的属性。
问题: 让我们假设文档被锁定并且用户点击编辑按钮一百万次! 每次都会实例化 DocumentLockBO、DocumentLockDAO 和最后的 Domino-Database 对象。
这对记忆和表演来说真是一场噩梦。 解决方案:使用 DocumentLockBO 的实例并将其设置为我的控制器类的属性。 每次单击时,将使用相同的 BO/DAO/Domino-Database 对象实例 问题:DocumentLockBO 有一个 DocumentLockDAO 属性,该属性本身也有一个 Domino-Database 属性。
Domino 对象出现序列化异常!
我的方向是否正确?有什么建议吗?
【问题讨论】:
-
欢迎来到 SO。只是一些提示:附加一些代码总是好的。另外,请尽量简化您的问题 - 这是一个很长的问题:)。
-
对于文档锁定,您可能需要考虑 Domino 中内置的文档锁定。请参阅 Mastering XPages 的相关部分。请记住,内置文档锁定还需要您在删除之前锁定文档。
标签: jsf model-view-controller xpages