经常需要对应用程序代码作小量改动以改变用于EJB查找的名称格式。
但是,规范依赖EJB(或者至少是EJBLite),这限制了它的广泛应用性。
实际上,避免这类耦合是创建企业JavaBean(EJB)技术背后的一个动机。
既然您已经知道了这个关系,那么可以研究上面的EJBDD中没有讨论过的节。
带有一个会话beanbean的非限定名称intf的每个EJB3业务接口都转换为一个名为bean_intf的服务。
一种类似的方法是使用Spring的抽象EJB实现支持类之一作为EJB实现的基类。
在上面的示例中,sbean2的注入值将是SCA引用sbean2的注入值,而不是相同名称的EJB引用。
取决于客户端与EJB的相对位置,可以设置访问Bean的逻辑的最佳方式。
如果你对所有这些问题的回答都是肯定的话,那么EJB组件就是你可以采用的合适技术。
EJB组件不像是面向对象的,比如在使用继承和多态时就有太多限制。
只要SCA引用接口匹配EJB引用接口,SCA运行时注入将替换那个EJB。
这些术语都是有关位置的是从客户机的角度看时EJB组件所在的概念性的位置。
在EJB开发中,会话虚包(SessionFacade)模式常被用来使网络流量最小化和确保事务一致性。
在以前的JavaEE平台中,必须在一个符合EJB2.1模式的XML文件中包含这样的描述符。
有趣地是,Seam对话通常用注入到有状态会话bean(EJB)中的扩展的实体管理器实现。
任何可以被实体bean(或任何其它EJB组件)返回的对象都必须满足这个要求。
从相反方面考虑,可以假设业务流程需要调出到现有EJB服务。
EJB规范中或许还有其他问题,但是这五个问题已经困扰我很长时间了。
另一种可能性是调用EJB组件,就好象它是CORBA组件一样。
如果一次能在许多EJB的定义中应用容器服务,这样情况会好些。
在另一个例子中,使用EJB组件使得系统过于复杂,性能也不好。
然而,必须了解一些规则和设计考虑,以免破坏EJB的技术要求。
应当注意到您可以在图表中改变多样性及EJB关联角色的名称。
针对优化的本地适配器调用或发送请求API的调用不会导致入站JCA请求以便进入目标EJB。
下次当您给POJO加上一些注释将其转换成EJB时,您应对OpenEJB团队所作的贡献表示感谢。
在这些批评之中,最主要的抱怨是EJB难于理解且开发起来繁琐乏味。