写点什么

OpenEJB 3.0 支持对枚举和集合的依赖注入及 OSGi 和 EJB 3.0 特性

  • 2008-05-07
  • 本文字数:2267 字

    阅读完需:约 7 分钟

开源轻量级 EJB 实现框架 OpenEJB 的最新版支持对枚举、集合和 Maps 的依赖注入(Dependency Injection,即 DI),并且支持 OSGi 和 EJB 3.0 规范。在经历了一年半的开发后,OpenEJB 3.0 最终版近期发布了。该版本还支持@EJB 引用其他EAR 文件中的本地接口、事务日志及基于HTTP 协议的EJBd,同时它还支持EJB 3.0 的新特性如Business Interfaces、Java Persistence API (JPA) 及 JAX-WS Web Services。

该新版本包含一些代码改进和 bug 修复,你可以在 OpenEJB 站点的发布文档中找到这些列表。Alexander Saint Croix 最近撰写博文列举出了该版本的新特性、改进及bug 修复。

OpenEJB 使用了其他一些开源框架,如使用 OpenJPA 提供 JPA 和 CMP 的持久化、使用 ActiveMQ 处理 JMS/MDB、使用 Apache CXF 实现 JAX-WS 特性。OpenEJB 的一些特性主要瞄准了 EJB 3.1 规范,如 Collapsed EAR (在同一个归档及 classloader 中共存的 ejbs 与 servlets)及针对单元测试的嵌入式 EJB 容器。不仅如此,即将成为 JavaEE 6 组成部分的 EJB 3.1 Lite profile 非常类似于 OpenEJB。

与 Java EE 容器的集成:

OpenEJB 3.0 可以插件的方式集成到 Tomcat 6 服务器中,这就在 Web 应用中增加了对 EJBs 的支持。将 OpenEJB 加入到 Tomcat 中可以为 Servlets 提供新的 Java EE 5 能力,如 JPA、JAX-WS、JMS、J2EE 连接器及事务。OpenEJB 天生就提供了对 Glassfish 部署描述符、 Geronimo 及部分 WebLogic 部署描述符的支持。

OSGi 支持:

OpenEJB 框架是作为一个 OSGi 包发布的,这意味着所有 OpenEJB 3.0 的二进制文件与 OSGi 元数据一起被提供并且可用于任何 OSGi 平台上。基于 OSGi(使用 Apache Felix 构建)的开源 ESB 框架 ServiceMix 4 将把 OpenEJB 作为 ServiceMix 的一部分。

OpenEJB 项目创始人之一的 David Blevins 撰写博文记录了该项目的再生最新发布。InfoQ 采访了 David 以更深入了解 OpenEJB 3.0 的特性及项目未来的路线图,尤其是它将如何支持 EJB 3.1 规范。

对企业级 Java 开发者来说,在 EJB 中支持对枚举和集合对象的依赖注入意味着什么呢?它是如何帮助 EJB 组件的设计和开发呢?

关键在于这使得 EJB 开发者(或者在 Tomcat 中使用 OpenEJB 的 Servlet 开发者)能真正深入到 JavaEE 的依赖注入功能,并且使之成为自己的东西。枚举、类和集合是我们所增加的额外的内建类型——我们期待在 Java EE 6 中也能具备这样的类型。此外,我们支持在应用中通过使用 java.beans.PropertyEditor 实现对任何你所创造对象的注入。这些增强使你能扩展注入以包含你的对象和资源并且使得 Java EE 作为一个通用的 DI 框架具有更好的可用性。

关于在 Java EE 容器外 OpenEJB 框架提供了何种测试驱动开发以支持对 EJB 的单元测试的问题,David 谈到了 OpenEJB 的嵌入式测试功能。

你可以写一个普通的单元测试以调用 EJBs,就像其他 EJB 客户端所做的那样。区别在于容器和 EJBs 就运行在你单元测试的 VM 中。我们会对应用的 classpath 进行调整使之适应于测试用例,这样你就可以通过 JNDI 查找你的测试用例了。你只需针对本地容器和远程容器分别使用一个不同的 InitialContextFactory,然后就可以相同的方式操作一个嵌入式数据库了。通过这种方式你可以测试 EJBs 的方方面面,没有任何局限性。畅想一下,你可以测试 webservice、Stateful bean 及扩展的 EntityManager,或者测试带有 JTA EntityManager 的 Stateless bean 并且测试用例运行于一个事务之内。这也是我们期望在 EJB 3.1 中能看到的一个特性。

你能详细说明 OpenEJB 3.0 提供的 OSGi 支持以及以 OSGi 包的方式使用 OpenEJB 产品意味着什么吗?

当前 OSGi 支持适合使用 OSGi 平台的人,他们渴望以包的方式增加 OpenEJB 以获得 EJB 支持,或者由类似于 Apache ServiceMix 这样的项目所驱动的人,该项目做的就是提供 EJB WebServices 支持。OpenEJB 可用的含有 EJB jars 的所有包都将被部署。

OpenEJB 3.0 能通过 HTTP 协议调用 EJB,这听起来非常棒。你能否更深入地解释一下该特性及其背后的动因?

其动因就是让人们能绕过防火墙的限制并使 Tomcat/OpenEJB 用户可以通过一个单一的端口来运行 ejbs 和 servlets。这是由一个 Servlet 驱动的,你可以将其加到任何应用中,也可以删除它,还可使用 SSL 等等。最终的目标就是提供 RESTful ejb 调用。在未来的 3.x 版本中你会见到它。

Java EE 6 会将 EJB 3.1 规范作为其一部分。在该版本之后,OpenEJB 团队有什么计划以支持 EJB 3.1 呢?

OpenEJB 已经是 EJB 3.1 预览版的一个不错的来源了,比如这里提到的特性以及在 1.0 版中推出的 WARs 中的 EJBs 特性等。我积极参与了 EJB 3.1 专家组的工作并且对工作的进程及 OpenEJB 所做的贡献感到兴奋异常。我们希望能再接再厉并在最终规范发布前提出其他建议如单例及异步 beans。

OpenEJB 项目对于新特性和未来的增强方面的路线图是什么?

既然这些特性的时间表已经公布出来了,我们期望看到更多 EJB 3.1 相关的特性以预览的方式呈现出来,如 @Singleton 和 @Asynchronous、没有接口的视图(the no-interface view)。嵌入式支持和 Tomcat 集成总是在不断被调整和扩展。我们在以下方面一直在不懈努力:集群、CMP/JPA 适配器的进一步优化、将 EJB 2.x 应用转化为 EJB 3.0(实际上是根据部署描述符增加了注解)的 Eclipse 插件、通过备选 JAXB 实现产生优化的代码改善主要的 WebServices 性能。

可以从 OpenEJB 站点下载 OpenEJB 3.0。OpenEJB 开发团队还提供了很多EJB 示例以帮助开发者学习该框架的使用。

查看英文原文: OpenEJB 3.0 Supports DI of Enums and Collections, OSGi and EJB 3.0 features

2008-05-07 11:15631
用户头像

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

关注

评论

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

一看就懂,一学就会的Raft解析

爱德华

raft PAXOS 共识算法 深入理解分布式共识算法

NFTScan 与 Dmail 达成合作伙伴,双方在 NFT 数据领域展开合作

NFT Research

NFT

聚焦云原生 | MIAOYUN入选开源GitOps产业联盟生态图景2.0

MIAOYUN

云计算 开源 云原生 开源社区 开源生态

CloudQuery 社区版重启 | 我们做了哪些准备?

BinTools图尔兹

数据库 社区版 数据库管理系统

官方文档 | 【JVM调优体系】「GC底层调优实战」XPocket为终结性能问题而生—开发指南

洛神灬殇

Java JVM 3月日更 XPocket 技术 优化体系

Flink 流批一体方案在数禾的实践

Apache Flink

大数据 实时计算 flinkl

几种快速传输大文件的方式

镭速

LED显示屏与DLP拼接屏的优缺点分析

Dylan

LED LED显示屏 户外LED显示屏

全国首个政企采购云平台:政采云基于 Dubbo 的混合云跨网方案实践

阿里巴巴云原生

阿里云 云原生 dubbo

全球开源盛会!GOTC 2023 即将拉开帷幕,15 大分论坛不容错过!

kk-OSC

大会 #开源

Linux 的 TCP 连接数量最大不能超过 65535?

Java你猿哥

Java Linux 后端 ssm

扫盲篇:Java中为啥一个 main 方法就能启动项目?

Java你猿哥

Java JVM ssm Java工程师

普通程序员要成为架构师,需要掌握哪些知识体系?

程序员小毕

Java 面试 程序人生 后端 架构师

人工智能迎来iPhone时刻,拟人化AI进入爆发前夜

硬科技星球

社招内推!JAVA、测开、数仓、前端均有坑

Qunar技术沙龙

互联网 工作 社招

在GitHub首页3分钟被下架!爱奇艺《高并发网关设计》笔记被盗?

做梦都在改BUG

Java 负载均衡 高并发 网关设计

专业的RAW图片处理:DxO PhotoLab 6 中文直装版

真大的脸盆

Mac Mac 软件 raw raw图片处理软件 Raw图像处理软件

一个有效的图表图像数据提取框架

合合技术团队

人工智能 计算机视觉 表格识别 图象识别

GPT-5紧急叫停?千名专家联名呼吁,AI技术的未来又该何去何从?

加入高科技仿生人

人工智能 AI技术 ChatGPT GPT-4

云原生容器高可用运维能力应用

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

测试流程规范如何推动落地?

老张

软件测试 目标识别 流程规范

深度访谈 NXTF_ 负责人|虚实联动才是通向未来的数字通行证

万事ONES

最全金融数据安全政策汇编,你应该需要它!( 附下载 )

极盾科技

数据安全

云图说 | MSSI之应用业务模型ABM,搭建业务与技术的数据治理桥梁

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

百套Web工业组态模板图库(长期更新)

2D3D前端可视化开发

组态软件 工业组态 组态图库 web组态图库 组态界面

字节跳动 Flink 大规模云原生化实践

Apache Flink

大数据 flink 实时计算

YRCloudFile V6.10.0 功能新增对 NVIDIA GPUDirect 与回收站的支持

焱融科技

#高性能 #分布式文件存储 #文件存储 #全闪存储 #容器存储

超级MMM互助盘DAPP系统开发源代码(案例演示)

开发微hkkf5566

IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践

JackJiang

即时通讯 即时通讯IM

基础篇丨链路追踪(Tracing)其实很简单

阿里巴巴云原生

阿里云 云原生 Tracing

智能、高效、便捷问题定位利器 —— 应用诊断分析平台 ATP 上线

OpenAnolis小助手

内存泄露 龙蜥社区 应用诊断 ATP 异常行为

OpenEJB 3.0支持对枚举和集合的依赖注入及OSGi和EJB 3.0特性_Java_Srini Penchikala_InfoQ精选文章