写点什么

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

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

关注

评论

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

API接口自动化测试框架搭建之需求整理、详细设计和框架设计

自动化测试 unittest 接口测试 API 测试框架

【Web安全】刚开始学渗透,零基础怎么入门?

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

金蝶发布2022年财报,云业务收入连续三年增长超30%

科技热闻

GPT-4:不了不了,这些我还做不到

禅道项目管理

GPT ChatGPT GPT-4

Nautilus Chain 现已推出测试网“Triton ”,有哪些潜在的机会?

鳄鱼视界

研发效能负责人/研发效能1号位 |DevOps负责人

laofo

DevOps cicd 研发效能 工程效能 工程效率

一个由public关键字引发的bug

小小怪下士

Java 程序员 后端

活动报名 | 博睿数据高阶行业沙龙保险专场启动报名!

博睿数据

智能运维 博睿数据 保险行业

H2 存储内核解析

陈飞

分布式事务 微服务架构 分布式数据库 分布式缓存 数据库内核

PyTorch深度学习实战 | 基于RNN的文本分类

TiAmo

CNN PyTorch

Matlab常用图像处理命令108例(六)

timerring

图像处理

App Store 2022年度app推荐: MacFamilyTree 10 最好的家族谱软件

Rose

MacFamilyTree 家族谱软件 苹果软件精选

面试官:怎么给详情页做性能优化的?

程序知音

2023年中建信息&超聚变核心生态伙伴高峰论坛成功举办

极客天地

热点面试题:JS 如何判断一个元素是否在可视区域内?

Immerse

JavaScript 面试 前端面试题 元素状态

云加速,前所未见的游戏网络体验

安第斯智能云

云计算 网络 游戏 云存储 智能云

架构训练营六-电商业务微服务拆分

白杨

三天吃透操作系统面试八股文

程序员大彬

Java 面试 操作系统

fastposter v2.13.0 一分钟完成开发海报 [云服务来袭]

物有本末

fastposter 海报生成 Java绘制图片 python开发海报

2023年会声会影最新版本六大新功能

茶色酒

会声会影2023

3分钟快速了解GPT-4

Baihai IDP

人工智能 自然语言处理 AI ChatGPT GPT-4

信创即时通讯-WorkPlus即时通讯软件支持国产化信创环境

BeeWorks

ViewFlipper的基本使用

芯动大师

android ViewFlipper 翻转

飞桨携手登临解读软硬一体技术优势,共推AI产业应用落地

飞桨PaddlePaddle

硬件 硬件产品 飞桨 软硬一体

mkv格式怎么在mac电脑播放,mac上5款必备的视频播放器

Rose

视频播放器 MKV 苹果mac软件

联邦学习开源框架FATE架构

京东科技开发者

人工智能 机器学习 联邦学习 FATE 企业号 3 月 PK 榜

Mac电脑照片编辑修图软件精选

Rose

修图 抠图 图片编辑 苹果mac软件 macOS系统

Orillusion正式公测开启,这份指南请收好!

Orillusion

开源 Web WebGL 渲染引擎 webgpu

如何改变Mac观看Netflix奈飞时的字幕样式?

Rose

Mac软件 奈飞客户端 网飞字幕

从头到尾学习一个完整 SLAM 项目

博文视点Broadview

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