写点什么

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

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

关注

评论

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

短视频如何有效去重?vivo 短视频分享去重实践

Zilliz

数据库 Milvus Zilliz

MySQL从入门到入魔之数据库连接池(04)

海拥(haiyong.site)

MySQL 数据库 28天写作 12月日更

互联网时代,谁来保护我们的个人隐私信息?

郑州埃文科技

数据库 App IP 个人信息

RPA的定义

金小K

RPA 自动化 自动化平台 自动化运维

在阿里,我如何做好技术项目管理?

阿里技术

技术管理 技术人生 内容合集

Python代码阅读(第71篇):检测一个平坦列表中是否有重复元素

Felix

Python List 编程 阅读代码 Python初学者

Typora + picGo实现插入图片上传gitee图床

zdd

Linux环境变量配置

恒生LIGHT云社区

Linux 运维 环境配置 环境变量

Linux云计算有那么难学吗?Linux入门篇。系统常用函数的调用方法大全

学神来啦

MySQL nginx Linux Shell linux云计算

架构实战-模块七-作业

无名

架构实战营 「架构实战营」

优秀工程师必备的一项技能,你解锁了吗?

阿里技术

技术管理 技术人生 内容合集

CSS之变量(四)悬浮跟踪按钮

Augus

CSS 12月日更

拍乐云发布“融合语音通话”产品,实现多场景下VoIP和PSTN互通

拍乐云Pano

RTC PSTN VoIP 融合语音通话

7 个建议让 Code Review 高效又高质

阿里技术

技术管理 技术人生 内容合集

在阿里做了五年技术主管,我有话想说

阿里技术

技术人生 内容合集

在高并发环境下该如何构建应用级缓存

华为云开发者联盟

缓存 高并发 负载 应用级缓存 缓存命中率

一文带你了解什么是GitOps

华为云开发者联盟

DevOps 运维 测试 软件开发 gitops

自用学习资料,Linux内核之【内存管理】的一些分享

奔着腾讯去

内存泄露 C/C++ Linux内核 内存映射 内存池

如何成为优秀的技术主管?你要做到这三点

阿里技术

技术管理 技术人生 内容合集

如何做好技术 Team Leader?

阿里技术

技术管理 技术人 内容合集

上百台linux服务器管理用什么软件好?谁给推荐一下!

行云管家

Linux 服务器 服务器管理

毕业10年才懂,会升层思考,工作有多轻松?

阿里技术

技术管理 技术人生 内容合集

为企业创建完美CRM系统策略

低代码小观

企业管理 CRM 客户关系管理 CRM系统 客户关系管理系统

互联网行业办理过等保业务,选择哪款堡垒机好?

行云管家

互联网 网络安全 堡垒机 云堡垒机

华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”

华为云开发者联盟

服务器 数据中心 华为云 东数西算 云数据中心

如何提高一个研发团队的“代码速度”?

阿里技术

技术管理 技术人生 内容合集

为什么大部分人做不了架构师?这2点是关键

阿里技术

技术人生 内容合集

面对复杂业务,if-else coder 如何升级?

阿里技术

技术人生 内容合集

OPPO大数据离线任务调度系统OFLOW

安第斯智能云

后端 数据

一周信创舆情观察(12.13~12.19)

统小信uos

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