EJB3:为什么事务语义和有状态都考虑了实现细节?
事务语义和状态完整性被认为是EJB3中的实现细节。
实现可以决定是使用bean还是容器管理的事务。
它可以决定容器管理事务的类型。
它可以决定它是满州还是无国籍。
但从逻辑上讲,这些都是重要的界面细节。
示例:(a)使用bean托管事务的bean无法使用容器管理事务调用bean。 (b)无状态bean不能调用满状态bean。
当提供EJB3接口时,您不知道它需要什么样的事务语义。同样,你不知道它是满州还是无国籍。
您需要额外的实施细节。示例:文档。
在运行时,可以动态地实例化不同的bean和调用链。因此可能出现无效状态。现在 - 容器可以捕获这些情况;但为什么要等到运行时?
为什么事务语义和状态丰满度要求不是接口的一部分?
没有找到相关结果
已邀请:
1 个回复
痰嫉
或
)是实施细节(我不确定你的例子(a))。 传播语义不是。 (
,
,
等)。 现在 - 容器可以捕获这些 的情况;但为什么要等到 运行? 即使接口中存在所有内容,类型系统仍然不足以在编译类型中强制执行规则。 无论如何,你需要一个工具来根据它们的应用语义来检查这些约束。如果解析注释,IDE可以执行此操作,容器可以在部署模块时执行此操作,更糟糕的是,它在运行时失败。 为什么是事务语义和 国家充实要求不是一部分 界面? java接口仅包含有关组件正确用法的有限信息集,无论是类,bean还是API。大多数组件的总体合同比接口中暴露的更复杂。 例子: 线程安全:如何在不查看文档的情况下知道特定类是否是线程安全的?
:你怎么知道每个XML标签可以多次调用它? 而这样的例子不胜枚举... 我个人使用术语合同来指代完整的约束集。从类型系统的角度来看,界面只给出了方法的签名。 如果您对该主题感兴趣,我建议您按合同查看设计。很长一段时间以来,将组件之间的合同正式化的想法已经存在。 所以我的答案是:因为即使它是,你仍然需要更多的信息。