写点什么

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

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

关注

评论

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

私有化的即时通讯工具能为企业带来哪些帮助?

WorkPlus

你必须知道的Java泛型

自然

Java core 9月月更

新一代开源时序数据库TDengine有哪些优势?

TDengine

数据库 tdengine 开源 企业号九月金秋榜

[MyBatisPlus]DQL编程控制①(条件查询)

十八岁讨厌编程

Java 后端开发 9月月更

WorkPlus移动应用管理平台 | 政企数字化的超级“连接器”

WorkPlus

MobLink Android 快速集成文档

MobTech袤博科技

sdk Android;

虚实交互,重磅开启|共建多元、互联的元宇宙产业生态圈,赋能上海打造产业高地

Geek_2d6073

新零售数智化转型,需要怎样的数据底座?

OceanBase 数据库

前端二面面试题(附答案)

helloworld1024fd

JavaScript 前端

[SpringBoot系列]基础过渡与夯实(基础配置)

十八岁讨厌编程

Java 后端开发 9月月更

毫末智行董事长张凯:渐进式路线将在智能驾驶竞赛中赢得终局

科技大数据

网络安全周是什么意思?为什么要开展网络安全周?

行云管家

网络安全 网络安全周

[MyBatisPlus]DQL编程控制②(查询投影、查询条件)

十八岁讨厌编程

Java 后端开发 9月月更

大学三年狂拿国内外十几个3D挑战赛大奖?!国内CG新星崛起

Renderbus瑞云渲染农场

CG 云渲染 3D动画 渲染农场 Renderbus瑞云渲染

百度App Android启动性能优化-工具篇

百度Geek说

android 性能优化 企业号九月金秋榜

一文看懂:什么是CRM系统?有什么用?哪些公司在用?

优秀

CRM系统

MobLink for Flutter

MobTech袤博科技

flutter ios android

重磅!阿里首推内部“SpringCloudAlibaba项目文档”这细节讲解,封神!

收到请回复

Java 云计算 开源 架构 编程语言

高频面试题:谈谈你对 Spring Boot 自动装配机制的理解

Java快了!

Spring Boot

led显示屏有污垢时该怎么清洗?

Dylan

LED显示屏 led显示屏厂家

开奖啦!看看8月月更获奖名单有没有你?

InfoQ写作社区官方

热门活动 8月月更

开源云管平台有哪些?有哪些优势?

行云管家

云计算 云平台 云管平台 云管理

[Spring boot] Spring boot 整合RabbitMQ实现通过RabbitMQ进行项目的连接

Java快了!

Spring Boot

7.07亿TPC-C背后的技术突破,OceanBase研究成果入选VLDB

OceanBase 数据库

带您了解昇腾模型压缩工具

华为云开发者联盟

人工智能 后端 企业号九月金秋榜

Databend 特性系列(1)|Databend 数据生命周期

Databend

大数据 大数据 开源 数据生命周期

【云原生】Kubernetes操作精讲

陈橘又青

9月月更

SpringBoot 源码 | applicationContext.refresh() 方法解析

六月的雨在InfoQ

springboot 源码阅读 Refresh 9月月更 SpringBoot启动流程

了解布隆过滤器

自然

Java core 9月月更

京东金融客户端用户触达方式的探索与实践

京东科技开发者

京东 用户 用户触达 widget 推送

阿里云EMAS移动测试|快速掌握移动端兼容性测试技巧

移动研发平台EMAS

阿里云 应用开发 兼容性测试 移动测试

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