NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:541157
用户头像

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

关注

评论

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

ARTS 第一周

onee

ARTS 打卡计划

Java 火焰图

wong

Java flamegraph

leetcode练级-只出现一次的数字 升级版

幸福三寸日光

算法 LeetCode js

Python 3.6.1 官方文档练习——初入江湖(三)

小匚

Python python教程

ARTS week 1

刘昱

职位拆解:互联网-运营

Taylor

行业资讯 移动互联网 运营 AARRR

ARTS 01 - 为什么写作在远程工作中那么重要?

Calvin

ARTS 打卡计划

Mobileye如何在云上进行深度学习模型训练

Randy

自动驾驶 学习 AI AWS

字节跳动:高级人才的五个基本素质

池建强

人才培养

Lucene的Smart CN实现分词、停用词、扩展词

Page

中文分词 lucene 停用词 扩展词 SmartCN

Linux如何调试内存泄漏

泰伦卢

c c++ C#

LeetCode 241. Different Ways to Add Parentheses

liu_liu

LeetCode

ARTS打卡 week 1

猫吃小怪兽

ARTS 打卡计划

LeetCode 1048. Longest String Chain

liu_liu

LeetCode

游戏夜读 | 刀塔选手比较老吗?

game1night

Spring Data R2DBC 入门

稻草鸟人

MySQL WebFlux springboot R2DBC

修改Tomcat窗口的名称

阡陌r

Java tomcat 踩坑 实施

【ARTS】Week 1

Amos

ARTS 打卡计划

leetcode练级-只出现一次的数字

幸福三寸日光

算法 LeetCode js

【应用异常监控利器Sentry搭建与学习笔记】

卓丁

Docker Sertry Fasthttp CI/CD Go 语言

鄙视链 & 全栈

伯薇

学习 能力提升 全栈

手把手透析C语言堆内存申请malloc及扩容realloc

卓丁

c 堆内存管理 heap memory malloc realloc

转行程序员浅谈Linux下的多线程编程

WB

Linux 程序员 多线程

我的读书生涯-小学到大学: 没有成长, 只有不断加深的疑惑

lmymirror

人生 读书 经历 半虚构

你所不知道的淘宝325秘密

毒手疯波

ios 淘宝 325

John 易筋 ARTS打卡Week 01

John(易筋)

ARTS 打卡计划

Kubernetes 资料集合

倪朋飞

学习 Kubernetes 架构模式

向往优雅的代码

Janenesome

编码习惯 读书

我的 Windows Terminal 配置

FeiLong

Windows Terminal

Service Provider Interface介绍

Skysper

spi

“数据资产”究竟是“数据”还是“资产”

马踏飞机747

大数据 数据中台 数据治理 数据资产

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