事务语义和状态完整性在 EJB3 中被视为实现细节。实现可以决定是使用 bean 还是容器管理的事务。它可以决定容器管理事务的类型。它可以决定它是有状态的还是无状态的。
但是,从逻辑上讲,这些都是重要的接口细节。示例: (a) 使用 bean 管理事务的 bean 不能调用使用容器管理事务的 bean。(b) 无状态 bean 不能调用有状态的 bean。
当呈现一个 EJB3 接口时,您不知道它需要什么样的事务语义。同样,您不知道它是有状态的还是无状态的。您需要额外的实施细节。示例:文档。
在运行时,可以动态实例化不同的 bean 和调用链。因此可能会出现无效状态。现在 - 容器可以捕获这些情况;但为什么要等到运行时?
为什么事务语义和状态完整性要求不是接口的一部分?