实战角度比较EJB2和EJB3的架构异同

文章作者 100test 发表时间 2011:03:17 21:07:14
来源 100Test.Com百考试题网


  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(). //直接使用

  }


相关文章


JAVA实现AES加密
Java中date与Jsp中date交互
2011年计算机二级考试JAVA备考冲刺攻略
您的JAVA代码安全吗?
实战角度比较EJB2和EJB3的架构异同
JBossDeveloperStudio简介
Eclipse JBoss EJB3的SessionBean注释方法
J2me中实现StringTokenizer的功能
java和ant在windows下的环境变量的配置方法
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛