写点什么

EJB3.1 计划中的特性

  • 2008-03-20
  • 本文字数:1591 字

    阅读完需:约 5 分钟

EJB3.1 专家组通过 JCP 发布了该规范的早期草案 。EJB 的新版本期望作为 2008 年底发布的 Java EE 6 规范的一部分,它主要面向如下两个方面:简化工作(从 EJB3 开始)以及增加 Java 企业社区要求的新特性。主要改变如下:

  1. 一个简化的本地视图,无需单独的本地业务接口就可提供 session bean 的访问。通过这种方式,开发人员仅仅使用一个 bean 类就能实现一个组件。
  2. 一个单例 session bean 组件:在应用所运行的 JVM 上,针对每个应用仅实例化一次,该单例 session bean 组件的目的是为应用提供一个缓存状态的简单方法。作为一个 EJB,该单例可以访问标准的 EJB 中间件服务集——事务管理、安全、远程、依赖注入等等。当容器调用 session bean 类的 newInstance 方法时该单例启动。默认情况下,由容器负责决定何时生成一个实例,然而开发者可以通过使用 @Startup 注解或者相应的部署描述符让实例在容器启动时就实例化。一个单例可能依赖另一个单例(通过 @DependsOn 注解标明),在这种情况下被依赖的单例就需要先实例化。单例 session bean 的生命周期与创建它的容器保持一致,但是其状态会因为 JVM 的停止或崩溃而丧失。因为其意在共享,所以它支持并发访问,这可由容器管理或者在每个 bean 中由开发者管理。
  3. 基于日历的 EJB 定时器表达式和自动创建的定时器:定时器服务可以通过使用类似于 UNIX cron 工具的基于日历的语法来表示定时器回调时间表。例如下面的时间表代表了“每周一、周三和周五的 3:15”:@Schedule(minute=“15”, hour=”3”, dayOfWeek=”Mon,Wed,Fri”)。定时器服务也支持通过 bean 的元数据或者部署描述符自动创建定时器。自动创建的定时器是在应用部署时由容器创建的。
  4. 异步的 session bean 调用:默认情况下 session bean 在其调用期内会阻塞客户端。通过一个异步的方法调用,容器将控制权返还给客户端并且在一个单独的线程上继续处理该调用。一个异步方法能返回一个 Future 对象,该对象使得客户端可以获得一个结果值、检查异常或者尝试取消正在进行中的调用。
  5. 对于 Enterprise JavaBeans 功能的一个轻量级子集的定义,它们能够在 Java EE Profiles 内(如 Java EE Web Profile)被提供,该子集将支持 EJB3.1 APIs 的如下部分:无状态、有状态以及单例 session beans、本地业务视图与非接口视图(no-interface view)、同步方法调用、拦截器、声明式安全、容器管理的事务(CMT)划分、bean 管理的事务(BMT)划分、企业 bean 环境、Java Persistence 2.0 API、JTA1.1 的用户事务接口、Common Annotations 1.0 以及由基本的 Java SE 6 平台(JDBC、RMI-IIOP、JNDI、JAXP、Java IDL 及 JAAS)所支持的企业 APIs。轻量级的 EJB 容器必须向企业 bean 实例提供一个 JNDI API 命名空间。打包的要求也得到了简化以便 EJB 组件可以直接打包到.war 文件中——在这种情况下,EJB 就驻留在 WEB-INF/classes 目录下而不再需要 ejb-jar。其可选的 ejb-jar.xml 部署描述符放置在 WEB-INF 中。

规范的领导者 Ken Saks 已经开始撰写博文以提供更多的关于专家组工作情况的信息,包括对通用 EJB 组件映射的支持:

“对开发者来说造成挫败的一个共同的源泉就是用来解析和查找 EJB 引用的映射信息(如全局 JNDI 名)的不可移植性。我们不断探索以将该信息标准化使得应用无需特定于厂商的 EJB 组件映射就可以部署”

专家组仍处在定义 EJB3.1 过程的早期阶段,所以上面列出来的特性有可能发生变化。这也是我们通过邮件向专家组提供反馈信息来参与到下一版规范的制定工作中去的绝佳机会。

查看英文原文: Planned Features For EJB 3.1 - - - - - -

译者简介:张龙,同济大学软件工程硕士,现就职于理光软件研究所。主要从事文档工作流和办公自动化解决方案的研发工作。热衷于 Java 轻量级框架的研究,对敏捷方法很感兴趣。曾有若干年的 J2EE 培训讲师经历。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2008-03-20 01:541340
用户头像

发布了 88 篇内容, 共 272.1 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

架构训练营-作业五

默光

计算架构 架构训练营5期

《重学Java设计模式》作者开始录视频了!

小傅哥

设计模式 小傅哥 视频学习

web前端培训:react的多环境灵活配置

@零度

前端开发 React

微博评论高性能高可用架构

smile

架构实战营

吾日三省吾身

xujiangniao

Spring Cloud Ribbon 中的 7 种负载均衡策略

王磊

SpringCloud

创建索引源码学习

liang1993

elasticsearch

从0到1万字贴心讲解单体架构到分布式架构的演变(第一篇)

刘祥

后端 分布式,

不得不知道系列之探活机制

梦朝思夕

高可用 网关 健康检查 服务探活 探活

在 Flutter 中使用 NavigationRail 和 BottomNavigationBar

坚果

3月日更 flutter for web

Java面向对象知识点拆分(二)

逆锋起笔

java面试 javase 3月月更 Java面试题

Antd多文件上传后台接收为null问题

CRMEB

程序员大学四年有对象和没对象的区别,对你工作有什么影响

刘祥

微博评论高性能高可用计算架构设计

「架构实战营」

模块5课后作业

苍狼

课后总结 模块五 架构训练营5期

DDD实战(4):战略设计之系统上下文和限界上下文

深清秋

DDD 软件架构 生鲜电商系统 3月月更

波卡将怎么影响区块链生态

不登山的小鲁

区块链 波卡

面向流批一体的 Flink Runtime 新进展

Apache Flink

大数据 flink 开源 编程 实时计算

汽车之家基于 Flink 的实时计算平台 3.0 建设实践

Apache Flink

大数据 flink 开源 编程 实时计算

银行卡信息精准识别-智能快速绑卡

DS小龙哥

3月月更

图解黑客DNS攻击

喀拉峻

网络安全

云端网络的三大场景概述

穿过生命散发芬芳

3月月更

简单了解 Python 匿名函数:lambda

踏雪痕

Python Lambda函数 3月程序媛福利 3月月更

作业十

hunk

云原生训练营

电影图书电视剧

xujiangniao

书单 | 云端架构怎么设计才好?这几本书告诉你!

博文视点Broadview

bigdata作业

Pyel

【Go实现】实践GoF的23种设计模式:SOLID原则

元闰子

Go 设计模式 SOLID原则

【高并发】不得不说的线程池与ThreadPoolExecutor类浅析

冰河

并发编程 多线程 高并发 线程池 异步编程

阿里巴巴基于应用和变更的交付模式|阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里巴巴 阿里云 持续交付 研发

Flink CDC 项目 GitHub star 破 2000,新增 Maintainer 成员

Apache Flink

大数据 flink 开源 编程 实时计算

EJB3.1计划中的特性_Java_Charles Humble_InfoQ精选文章