`
yingfang05
  • 浏览: 119545 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

EJB 3.1五大模式改进令Java EE 6更好用之二

    博客分类:
  • ejb3
阅读更多
异步会话Bean调用
  EJB 3.1引入了一个强大功能,那就是可以异步调用会话Bean方法。对于一个异步调用,允许会话Bean执行它的操作时,客户端并行处理其它事情。

  通过@Asynchronous注解让一个方法支持异步,也可以使用一个部署描述符将一个方法指定为异步的。

  异步方法可以返回一个java.util.concurrent.Future<V>或void对象,Future<V>对象容纳了异步操作返回的结果,你可以访问Future<V>对象检索一个结果值,检查异常或取消一个正在处理中的调用。Future<V>接口提供一个get()方法检索值,当然,你也可以其它合适的类检索值,如 AsyncResult<V>,实际上它自己实现了一个Future<V>接口。

  在下面的例子中,performCalculation()方法是异步的,它使用AsyncResult<V>类检索Future<V>对象返回的值。

  1.@Stateless

  2.   Public class CalculatorBean implements CalculatorService {

  3.      ...

  4.

  5.      @Asynchronous

  6.      public Future<Integer> performCalculation(...) {

  7.

  8.         // ... do calculation

  9.

  10.         Integer result = ...;

  11.         return new AsyncResult<Integer>(result);

  12.      }

  13.   }

  14.

  简化打包

  EJB规范始终要求企业Bean打包到一个叫做ejb-jar文件的企业模块中,因为它一般用于Java EE Web应用程序,这种打包方法显得有些累赘,应用程序被强制使用一个Web应用程序使用的归档文件(.war),一个企业Bean使用的ejb-jar文件,还有一个包含其它包的企业归档文件(.ear),如图1所示,这种打包方法非常复杂,它需要指定模块之间共享的类和资源。

  EJB 3.1解决了这个问题,简化了打包的复杂程度,彻底消除了企业Bean类必须打包进ejb-jar文件的限制,如图2所示,现在你可以直接将EJB类放到.war文件中,使用打包Web应用程序类相同的打包规则,这意味着你可以将EJB类放到WEB-INF/classes目录下,或者放到WEB- INF/lib目录下的一个.jar文件中。EJB部署描述符也是可选的,如果你需要它,你可以将EJB部署描述符打包到WEB-INF/ejb- jar.xml文件中。

  轻量级EJB(EJB Lite)

  对许多应用程序而言,EJB提供了比应用程序真正需要的多得多的功能,使用EJB的应用程序通常只需要使用EJB 3.1的一个子集,轻量级EJB就是为满足这种需要诞生的。

  轻量级EJB简化了许多开发人员使用EJB,使用轻量级EJB的开发人员在他们的应用程序中需要学习使用一部分功能即可。此外,使用轻量级EJB开发的应用程序可以运行在轻量级EJB或全功能EJB 3.1 API实现的应用程序服务器上。

  注意,轻量级EJB不是一个产品,它是EJB 3.1 API的一个子集,轻量级EJB的目标是提供EJB 3.1的一个子集,满足大多数应用程序业务逻辑层的需要,它也为供应商提供了更好的灵活性,为了满足这些模板,轻量级EJB提供了以下功能:

  1、有状态,无状态和单元素集合会话Bean;

  2、本地EJB接口或无接口;

  3、拦截器;

  4、容器管理的和Bean管理的事务;

  5、声明和编程安全;

  6、嵌入式API。

  更多EJB 3.1新特性

  EJB 3.1除前面谈到的这些新特性外,还带来了更多的新特性和改进,例如,它包括一个用于Java SE环境的嵌入式API和容器,这些特性使在Java EE容器外(通常指Java SE环境)测试EJB 组件更容易,另外,EJB 3.1引入的单元素集合为EJB应用程序提供了一个方便的方法,在应用程序初始化或关闭期间接受反馈,默认情况下,由容器决定何时实例化单元素集合实例,但你可以通过@Startup注解,强制容器在应用程序初始化期间实例化单元素集合实例,允许Bean定义一个@PostConstruct方法保证在应用程序启动时调用,此外,@PreDestroy方法可以保证应用程序关闭时调用。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics