AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

JBoss AS 6 上的 EJB 3.1 新特性简介

  • 2011-01-09
  • 本文字数:1364 字

    阅读完需:约 4 分钟

不久前, JBoss 发布了新版本的 JBoss AS 6 应用服务器,该新版本提供了对 Java EE 6 Web Profile 的完整支持。David Salter 则在自己的博客中详细介绍了EJB 3.1 的新特性

EJB 3.1 的 3 个主要新特性是:

  • EJB 可以作为 WAR 文件的一部分部署,无需提供单独的 EJB JAR 文件
  • 可以开发无业务接口的 EJB
  • 可以将 EJB 部署为 Singleton

下面分别来看看这 3 个新特性。

EJB 可以作为 WAR 文件的一部分部署。

如果使用 NetBeans 进行开发,那么你可以创建一个简单的 Java EE 6 Web 项目,然后在该 Web 项目内创建 EJB。如果开发的是 Web 项目,那么无需添加额外的 JAR 文件就可以部署任何 EJB。

可以开发无业务接口的 EJB

创建无业务接口的 EJB 就像创建 POJO 一样简单。现在,可以像下面的代码一样定义 EJB:

复制代码
package com.davidsalter.ejb31test;
import javax.ejb.Stateless;
@Stateless
public class HelloSessionBean {
public String sayHello() {
return "Hi there !!";
}
}

与 POJO 唯一的差别在于该类使用了注解 @Stateless,这表明它是一个 Stateless Session Bean。

如果将包含该 EJB 的 WAR 文件部署到 JBoss 中,那么在部署成功后我们会在 JBoss 控制台上看到如下消息:

复制代码
21:08:29,653 INFO [org.jboss.ejb3.nointerface.impl.jndi.AbstractNoInterfaceViewBinder] Binding the following entry in Global JNDI for bean:HelloSessionBean
HelloSessionBean/no-interface -> EJB3.1 no-interface view

从 Web 项目中调用 EJB 是相当简单的事情。我们可以使用 @EJB 注解将 EJB 注入到 Servlet 中。如下代码所示:

复制代码
public class HelloServlet extends HttpServlet {
@EJB
HelloSessionBean helloSessionBean;
...
PrintWriter out = response.getWriter();
out.println(helloSessionBean.sayHello());

可以将 EJB 部署为 Singleton

现在,可以通过 @Singleton 注解将 EJB 声明为 Singleton。如果使用 @PostConstruct 与 @PreDestroy 注解,那么就可以在该 Singleton 上轻松实现任意的初始化与清理动作了。被 @PostConstruct 所注解的方法会在该 Singleton 首次构造之后得到调用,比如说当调用了 Singleton 的某个 Servlet 或是某个 JSF 的 backing bean 首次加载时。被 @PreDestroy 所注解的方法会在该 Singleton 销毁前得到调用,因此该方法可用于执行资源清理操作。

以这种方式定义 Singleton 可用于存储应用的多个客户端所需要的数据,如下代码所示:

复制代码
package com.davidsalter.ejb31test;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Singleton;
@Singleton
public class SingletonSessionBean {
private String creationDate;
@PostConstruct
public void init() {
System.out.println("Initialize singleton");
creationDate = new Date().toString();
}
@PreDestroy
public void shutdown() {
System.out.println("Shutting down singleton");
}
public String getDate() {
return creationDate;
}
}

调用 Singleton 与之前调用 Session Bean 一样简单,如下代码所示:

复制代码
@EJB
SingletonSessionBean singletonSessionBean;

感兴趣的读者可以从这里下载完整的示例代码并实际运行。

2011-01-09 12:332201
用户头像

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

关注

评论

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

用友BIP超级版合同全生命周期运营:销售驱动型企业数智化升级之路

用友BIP

新业财税资档一体化:实现业管合一就选用友BIP超级版

用友BIP

从挑战到突破:HBlock定义智算存储新范式!

天翼云开发者社区

人工智能 云计算 天翼云

拥抱 OpenTelemetry:阿里云 Java Agent 演进实践

阿里巴巴云原生

阿里云 云原生

什么是IM即时通讯?

BeeWorks

高效安全迁移:PG高可用集群实战方案深度解析

袋鼠云数栈

数据处理 数据库运维 数据迁移 迁移方案 数据迁移工具

ClkLog埋点分析系统-uni-app埋点上报攻略

ClkLog

开源 埋点 sdk 用户画像

“天翼云息壤杯”高校AI大赛福建赛区启动!

天翼云开发者社区

云计算 AI 天翼云

IoTDB 常见问题 Q&A 第一期

Apache IoTDB

火山引擎边缘云出席第六届泛娱乐行业峰会,揭秘游戏行业"加速"新姿势

火山引擎边缘云

互联网 CDN 边缘计算 游戏 加速

赋能国企数字化改革:WorkPlusIM即时通讯平台的自主可控之路

BeeWorks

阿里重磅开源 Fluss: Flink Unified Streaming Storage

阿里云大数据AI技术

大数据 flink FFA

什么是DNSSEC?一文读懂DNSSEC的工作原理和实际应用

国科云

全球化| YappyPets:业务集中管控,驱动全球扩张新引擎

用友BIP

数据流通从内循环到外循环,企业数据变现有多远?

用友BIP

通义灵码走进北京大学创新课堂丨阿里云云原生 10 月产品月报

阿里巴巴云原生

阿里云 云原生

长城上,低空下,北京联通点亮5G-A的时代星光

脑极体

通信

IM即时通讯基础入门:新手读者必看指南

BeeWorks

三种熔断策略在数据服务API中的实践应用

袋鼠云数栈

数据治理 用户体验 数据服务平台 熔断策略

AutoGLM:一句话控制手机电脑;英伟达新视觉压缩工具:Cosmos Tokenizer 丨 RTE 开发者日报

声网

分布式 Data Warebase - 探索数据系统物理极限

ProtonBase

分布式 数仓 database #数据库 #大数据

智启新篇汇力共赢!天翼云赋能天府数谷焕新蝶变!

天翼云开发者社区

云计算 生态大会 天翼云

分布式 Data Warebase - 让数据涌现智能

ProtonBase

数据库 分布式 云原生 数仓 #大数据

JBoss AS 6上的EJB 3.1新特性简介_Java_张龙_InfoQ精选文章