Java EE 6新特性尝鲜:EJB 3.1重要变化总览

译文
开发 后端
Java EE 6自2007年提出草案以来,一直都在缓慢的进展中。这个版本和之前版本有诸多不同,对扩展性和简易性进行了很大的提升。本文讲解Java EE 6中的重要新特性之EJB 3.1(Enterprise JavaBeans)的重要变化。

【51CTO精选译文】EJB 3.1规范的主要目标是使EJB尽可能简单,其核心思想是简化EJB架构同时引入新的功能,EJB 3.1中一些重要的变化包括:

51CTO编辑推荐:Java EE 6遥遥无期 预览版两极分化

移除了本地事务接口:EJB 3.0移除了复杂的本地和远程接口,为简单旧式Java接口(plain old Java interface,POJI)开路,EJB 3.1更进了一步,事务接口也不用再强制遵循了,类似于POJO,如JPA中的实体和消息驱动Beans,在Java EE 6中,开发者可以不用事务接口编写会话Beans了:

  1. @Stateless 
  2. public class StockQuoteBean {  
  3.    public double getStockPrice(String symbol) {  
  4.       ...  
  5.    }  

引入了Singleton Beans:引入Singleton beans概念主要是为了共享应用数据和支持一致性访问,当一个Bean被标记为Singleton时,在整个应用层容器只能保证每个JVM共享一个实例,对于缓存这一规定是行之有效的,Singleton beans和其它EJB一样,它们是开发人员可以通过注解将它们标记为Singleton beans的POJO。

默认情况下,所有Singleton beans都是事务性和线程安全的,具有灵活的并发性选项,Java EE 6也引入了并发性注解在getter和setter函数上执行锁定的读/写操作。

  1. @Singleton 
  2. @Startup 
  3. public class CounterBean {  
  4.    private int count;  
  5.    @PostConstruct 
  6.    public void initialize() {  
  7.       count=5;  
  8.    }  
  9. }  

直接用WAR文件打包EJB组件:EJB 3.1中一个重要的改进是可以直接将EJB组建打包到WAR文件中,不用再独立创建jar文件了,EJB 3.1为Web应用程序提供了一个简化的打包机制,图1显示了EJB 3.1以前的打包方式。

EJB 3.1之前的打包方式(EJB 3.0打包结构) 
图 1 EJB 3.1之前的打包方式(EJB 3.0打包结构)

使用EJB 3.1后,开发人员可以直接将classes目录下的EJB和servlets一起打包到WAR文件中,图2显示了EJB 3.1的打包方式。

EJB 3.1打包方式结构图 
图 2 EJB 3.1打包方式结构图

在Java SE环境中嵌入API执行EJB:这个特性背后的思想是允许EJB在Java SE环境中运行,即客户端和EJB在相同的JVM中运行,为了运行EJB,Java EE 6提供了一个嵌入式EJB容器,使用JNDI进行检查,这为测试,批处理过程和在桌面应用程序中使用EJB提供了便利,嵌入式EJB容器提供了一个管理EJB的环境,这个环境支持有限的服务,javax.ejb.EJBContainer类表示一个嵌入式容器。

异步会话Beans:一个支持异步函数调用的会话Bean,使用@Asynchronous注解的Bean函数是异步调用的,在EJB 3.1之前,在会话Bean上的任何函数调用都是同步的。异步函数可以返回一个java.util.concurrent API的Future对象,当客户端想获取调用的状态时这个非常有用,通过检索函数返回的值,检查一个异常,或者取消调用。

EJB Lite:许多企业级应用不需要EJB完整的功能,因此在EJB 3.1中引入了EJB Lite,它是EJB API的一个子集,EJB Lite包括了创建一个企业级应用的所有功能,但不包括专业的API。EJB Lite提供了厂家选项,让厂家可以在它们自己的产品中实施EJB API的子集,使用EJB Lite创建应用程序可以部署到任何支持EJB的服务器上,不管它是完整的EJB还是EJB Lite,嵌入式容器也支持EJB Lite,EJB Lite有以下EJB API子集:

◆会话Bean组件(Stateless,stateful和singleton会话Bean)

◆只支持同步调用

◆容器管理和Bean管理事务

◆声明和编程安全

◆截取器

◆支持部署描述信息(ejb-jar.xml)

图3中显示的EJB Lite支持的功能在完整的EJB中也全部支持。

EJB 3.1 Lite和EJB 3.1完整版支持的功能对比 
图 3 EJB 3.1 Lite和EJB 3.1完整版支持的功能对比

原文:New Features in Java EE 6

作者:Sangeetha S.

【编辑推荐】

  1. 为什么我喜欢EJB 3.0并且尤其喜欢EJB 3.1
  2. Java开发三剑客JSF2.0、EJB3.1、JPA2.0现状及发展
  3. EJB3.1新特性一览 Time服务更强大
  4. EJB初学者常见的12个困惑问与答
  5. Java语言中关于EJB技术的概论
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2010-01-20 09:33:59

2018-03-05 17:29:52

SparkApache SparSpark 2.3

2009-06-04 17:24:29

EJB3.1新特性Time服务

2013-05-02 09:14:19

Java 8Java 8的新特性

2010-01-14 09:15:07

Java EE 6Servlet 3.0异步处理

2009-12-15 09:13:07

Java EE 6

2012-10-17 09:20:17

Windows 8

2010-07-01 15:31:08

Java EE 6EJBWebService

2009-12-11 11:33:09

NetBeans 6.

2011-04-02 14:33:51

Bean ValidaJava EE 6Java

2009-06-16 11:23:00

InstrumentaJava SE 6新特

2010-01-22 09:52:32

JPA 2.0Java EE 6

2009-06-16 11:24:00

HTTP增强Java SE 6新特

2010-01-05 09:15:45

Java EE 6Bean验证

2018-05-18 15:05:25

JavaJava 10新特性

2010-04-22 09:17:35

Red Hat

2009-06-04 17:33:08

EJB 3.1EJB 3.0

2011-11-06 21:19:38

Eclipse

2011-12-16 09:24:53

JavaSpring开源框架

2012-08-10 10:15:50

HTML5
点赞
收藏

51CTO技术栈公众号