从EJB3.2规范中获取的完整句子:
与无界面视图的引用交互时,客户端 不得对内部实施做出任何假设 引用,例如可能的任何特定于实例的状态 出现在参考文献中
我实际上是想了解这实际意味着什么,我想知道是否有人可以提供一些例子。
修改:
上面的句子来自3.4.4节会话Bean的无界面视图,也许这个信息很有帮助
答案 0 :(得分:1)
生成无接口视图代理时,EJB容器必须创建EJB类的子类,并覆盖所有公共方法以提供代理行为(如安全性,事务)。
您可以获取对bean的引用(例如,将其传递给另一个ejb):
NoInterfaceBean bean = ejbContext.getBusinessObject(NoInterfaceBean.class);
这将返回一个带有类类型的引用,该类型与bean类本身相同(通常,如果EJB具有业务接口,它将返回接口类),但是它不是对NoInterfaceBean实例的引用(而是对具有相同名称的代理类)。可以把它想象成一个对你的bean的拉皮条的引用,关于你
不得对内部实施做出任何假设
与"正常"基本相同EJB' S。你知道你的bean实例有一些魔力,但是由于你将接口作为类类型,它已经很清楚,实现接口的每个类都可以有不同的内部实现。
因此,规范强调了这一点上的差异。即使它看起来像是对具体类的引用,也不是(正如他们在规范的下一段JSR-000345 Enterprise JavaBeansTM 3.2 Final Release中所说的那样:
虽然引用对象与类型兼容 对应的bean类类型,没有规定的关系 介绍和内部实现之间 bean实例的实现。