加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 具有相同接口的两个EJB.这是一个好习惯吗?

发布时间:2020-12-15 08:42:31 所属栏目:Java 来源:网络整理
导读:我的用例要求我有一个类层次结构,如下所示 public interface ServiceA{ public void doSomething();}public abstract class AbstractClass implements ServiceA{ @Override public void doSomething(){ getMetaValue(); .. do common Things applicable to a
我的用例要求我有一个类层次结构,如下所示

public interface ServiceA{ public void doSomething();}


public abstract class AbstractClass implements ServiceA{

     @Override
     public void doSomething(){
        getMetaValue();        
        .. do common Things applicable to all EJBS...
     }

     public abstract MeataValue getMetaValue();
}

@Stateless(mappedName="EJBBeanImlJ")
public EJBBeanImplJ extends AbstractClass{
   public MetaValue getMetaValue(){
      return new MetaValue(x,y);
   }
}

@Stateless(mappedName="EJBBeanImplK")
public EJBBeanImplK extends AbstractClass{

   public MetaValue getMetaValue(){
       return new MetaValue(a,b);
   }
}

问题:

>为两个EJB实现提供相同的接口,这是一个很好的EJB实践吗?
>您是否在班级设计/等级制度中看到任何其他缺点?

注意:我的appserver是Weblogic

谢谢

解决方法

EJB只是一种特殊的类.它很特殊,因为它的生命周期由容器管理.它只是一个类,因为它是用java编写的,可以实现它想要的任何接口和任何业务逻辑.

所以,我认为拥有相同接口的多个实现是一个好习惯.它允许将特定服务的实现与其使用分开.例如,您可以创建可以发送一些内容和2个实现的接口发件人:EmailSender和SmsSender.两者都实现相同的接口,都是EJB.

唯一的问题是,在这种情况下,您不能仅通过其接口绑定对sender的引用,但必须像您一样使用mappedName.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读