设为首页 加入收藏

TOP

实战角度比较EJB2和EJB3的架构异同
2014-10-29 18:30:31 来源: 作者: 【 】 浏览:84
Tags:实战 角度 比较 EJB2 EJB3 架构 异同

  EJB编程模型的简化


  首先,EJB3简化的一个主要表现是:在EJB3中,一个EJB不再象EJB2中需要两个接口一个Bean实现类,虽然我们以前使用JBuilder这样可视化开发工具自动生成了EJB2的这三个类,好像不觉得复杂,但是当EJB个数增加时,就显得累赘了。


  简化后的EJB3的sessionBean依靠annotations元注释来定义SessionBean的类型,也就是说,EJB2中的 SessionBean类型区分在EJB3继续继承,只不过书写代码的方式不同而已,例如下代码使用@Stateless表示一个无状态Bean。


  package example;


  @Stateless


  public class TestSessionBean implements TestSessionLocal{


  public void xxxx(){


  System.out.println("hello");


  }


  }


  上述Session Bean中没有了EJB2中ejbCreate等多余方法,这样TestSessionBean很象一个普通JavaBeans了。是不是简单?先别急,我们需要接着看看这个TestSessionBean是如何调用?


  在EJB2中,一个EJB对象的调用需要经过两个步骤:JNDI寻找和工厂创建,如下例:


  Context ctx = new InitialContext();


  TestSessionLocalHome home = (TestSessionLocalHome)


  ctx.lookup("java:comp/env/ejb/TestSession");


  TestSessionLocal bean = home.create();


  bean.xxxx();//真正目的 对象使用


  其实上述代码最后一句才是我们真正目的,但是为了这个目的,必须经过前面冗长的代码创建,而在EJB3中,为创建型模式的Ioc模式(或称依赖注射)取代了home.create这样简单工厂创建模式,以一种更加松耦合和简洁的方式解决了对象创建问题,可以让我们精力更集中在对象的使用上了。


  下面是annotations+Ioc/DI的EJB3调用代码:


  @EJB //注意这里后面是空白


  private TestSessionLocal testbean; //使用接口声明


  public void invoke(){


  testbean.xxxx(); //直接使用


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇JBossDeveloperStudio简介 下一篇两种Java容器类List和Set分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: