写点什么

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

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

关注

评论

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

面向对象的三个基本特征(要素)

彭阿三

三要素 三个基本特征 封装、继承、多态

机器学习算法评估指标—2D语义分割

做技术BP的文案Gou

学习 2D 评估标准 语义分割

华硕灵珑II笔记本电脑——自由work不设限

最新动态

情绪管理 - ABC理论

石云升

情绪控制 ABC理论 费斯汀格法则

副业月赚 10 万的程序员是如何做销售的?

非著名程序员

程序员 独立开发者 程序人生 提升认知

游戏夜读 | 如何制作游戏?

game1night

2020年5月云主机性能评测报告

博睿数据

云计算 服务器 公有云 机房 云主机

重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」

小傅哥

设计模式 小傅哥 重构 代码质量 代码坏味道

常用运筹学软件整理

张利东

月薪 3W 的 Apple 微信编辑是这么发文章的 |如何发类似 Apple 微信公众号的文章效果

陈东泽 EuryChen

CSS 微信 大前端 apple 微信公众号

JAVA 中的 CAS

犀利豆

Java 并发 CAS

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-测试模板

编程道与术

Java 编程 TDD 单元测试 JUNI

原创下载 | TDD工具集原创开源代码免费下载!

编程道与术

Java 开源 TDD 下载 代码

架构师训练营作业(第二周)

王海

极客大学架构师训练营

Zookeeper 序列化

CoderLi

Java zookeeper 源码分析 后端

下周要开始“卖桃者说”代班计划了

霍太稳@极客邦科技

日常

架构师训练营学习总结——框架设计【第二周】

王海

极客大学架构师训练营

自由是不是随心所欲?

Neco.W

个人成长 自由 控制

如何基于 OAM 编写一个扩展 Trait?

钱王骞

云原生 k8s OAM

2w字长文!手撸一套 Java 基础面试题

苹果看辽宁体育

Java 后端 Java25周年

Java 序列化

CoderLi

Java 程序员 后端 序列化

Zookeeper-Access Control List(ACL)

CoderLi

Java zookeeper 源码分析 后端

Java | 原来 serialVersionUID 的用处在这里

YoungZY

Java

如何让程序员变得没朋友

四猿外

程序员 个人感悟 技术人生 经验分享

ZooKeeper 数据模型:节点的特性与应用

CoderLi

zookeeper 源码分析 数据模型 节点

kubernetes简单入门(多图少字版)

绿星雪碧

Kubernetes 入门

钩陈/ 好中文作业:巴别塔

ZoomQuiet大妈

写作 大妈 是也乎 IMHO 蟒营®

Zookeeper Watcher 流程分析(结合源码)

CoderLi

Java zookeeper 源码分析 后端 Watcher

iPad配置OpenVPN客户端

wong

ipad OpenVPN

中电标协提出并归口:《政务APP评价指标》团体标准开启制订工作

博睿数据

App 标准化 中电标协 政务信息化 博睿宏远

知乎Matisse图片库在Android10上拍照,预览问题

三爻

android

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