EJB3新特性
元数据注解
依赖注入
一 EJB3新特性
相比EJB3以前的版本而言,增加了两个新特性:元数据注解(Annotation) 和依赖注入(Injection),而元数据注解以最大限度的使部署描述符从冗余繁杂中脱离出来。
二 元素据注解
元数据注解,来源于Java EE 5中的Annotation----javax.annotation.*.一般而言,对于定义SLSB(Stateless Session Bean)而言,@Stateless;对于SFSB(Stateful Session Bean)而言,@Stateful;
下面归纳下EJB3中的常用注释:
类型 | 注释 |
Stateless | Session Bean(javax.ejb.Stateless) @Stateless |
Stateful | Session Bean(javax.ejb.Stateful) @Stateful |
Local接口 | (Javax.ejb.Local) @Local |
Remote接口 | (Javax.ejb.Remote) @Remote |
Message Driven Bean(MDB) | (javax.ejb.MessageDriven) @MessageDriven |
Entiry Bean(实体Bean) | @Entity |
Javax.ejb.remove | @Remove(当一个Session完成时,自动调用Remove) |
Javax.ejb.EJB | @EJB(表示注入实例) |
Javax.annotation.Resource | @Resource(name=”jms/QueueConnectionFactory”) |
当然,EJB注入和Resource注入相比,Ejb注入只是针对于EJB而言,而Resource注入即是对所有的文件都可以进行注入。
Eg:
1) @EJB Private HelloWorld helloWorld;
2) @Remove Public String getUserName(String userName);
3) @Resource(name=”jms/QueueConnectionFactory”) Private ConnectionFactory connectionFactory;
4) @MessageDriven{
activationConfig = {
@ActivationConfigProperty{
propertyName=”destinationName”,
propertyValue=”jms/HelloWorldQueue”
}
}
当然,在MDB消息驱动中,MDB实现了Javax.jms.MessageListener接口。
5)
@Entity
@Table{name=”User”}
Pubic class User implements Serializable{
Private Long userId;
@Id
@GeneratedValue(Strategy=GenerationType.AUTO)
@Column(name=”USER_ID”)
Public Long getUserId(Long userId){
Return userId;
}
}
对于在EJB2中,使用容器管理的持久化(Container-Managed Persistence---CMP)实体Bean生成主键困难很多。
下表中说明了J2EE中引入的主要元数据注解。
注解 用途 可用的组件
Javax.annotation.Resource Resource的依赖注入 EJB/WEB/应用程序客户端
Javax.ejb.EJB Session Bean的依赖注入
Javax.jws.WebServiceRef WEB服务的依赖注入
Javax.persistence.PersistenceContext 容器管理的Entity Manager依赖注入 EJB/WEB/WEB APP Client
Javax.persistence.PersistenceUnit EntityManagerFactory的依赖注入 EJB/WEB
Javax.annotation.PostConstruct 生命周期方法
Javax.annotation.PreDestory 生命周期方法
Javax.annotation.security.RunAs 安全
Javax.annotation.security.RolesAllowed 安全 EJB
Javax.annotation.security.PermitAll 安全
Javax.annotation.security.DenyAll 安全
Javax.annotation.security.DeclareRoles 安全 EJB/WEB
EJB加载注解的时机:当容器第一次加载客户端组件(eg:Servlet)的时候,发现有元数据注释,它将在后台或者RMI Lookup 这个EJB,从而设置可获得的EJB引用。
下面举个注释的例子:
当然,我们在大型系统的开发中,也会经常用到元数据注释和部署描述符混合使用。下面就是一个创建Ejb Stateless Session Bean例子(ejb-jar.xml):
<enterprise-beans>
<session>
<ejb-name>HelloWordBean</ejb-name>
<local>com.ejb3.client.Bean</local>
<ejb-class>com.ejb3.ejbBean.userBean</ejb-class>
<session-type> Stateless </session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
三 依赖注入(Injection)
依赖注入是通用元数据注解的前端和中心,包含@Resource,@EJB,@WebServ ice-Ref,@PersistenceContext和@PersistenceUnit注解。在Spring Framework中得到很好的体现。
其实关于EJB中依赖注入而言,应该从JNDI查找来说起。若使用过EJB2,就应该知道JNDI实现方式。在JNDI查找Bean过程中,是EJB主动驱动JNDI去lookup其相匹配的资源和Bean;而依赖注入恰恰相反,是资源文件或者Bean通过容器去注入到EJB中,从而让容器处理服务或资源的实例化,初始化以及把服务或资源引用给Client等等复杂的工作,是一种被动的操作。当然,所谓的主动和被动,都是以EJB为主体。
JNDI查找的Sample:
InitialContext context = new InitialContext();
TestEjb testEjb = (TestEjb)context.lookup(“TestEjbBean/Remote”);
分享到:
相关推荐
【实战角度比较EJB2和EJB3的架构异同】 EJB,即Enterprise JavaBeans,是Java EE(企业版Java)平台的核心组件之一,用于构建可复用、分布式的服务器端应用程序。EJB2和EJB3是EJB技术的两个主要版本,它们在架构上...
EJB3是EJB规范的一个重大改革版本,引入了许多简化开发的新特性,使得Java开发者能够更高效地构建分布式企业应用。 1. **EJB的概述** EJB是一种组件模型,它定义了如何在服务器端部署和管理业务逻辑。EJB3是基于...
"ejb3 带源码"的资源,如"Mastering EJB3"和"Beginning EJB3 Application Development"等,提供了深入学习和实践EJB3技术的宝贵材料。 1. **EJB3核心概念**: - **实体Bean(Entity Bean)**:代表数据库中的持久...
【 ejb3_structs 】是一个关于企业级JavaBean(EJB)3.0与Struts框架集成的项目。在Java EE(Enterprise Edition)应用程序开发中,EJB3和Struts是两个重要的组件,分别负责业务逻辑管理和用户界面展示。 **EJB...
**EJB3(Enterprise JavaBeans 3.0)**是Java EE平台中的核心组件,它为企业级应用提供了服务器端的组件模型。EJB3引入了许多重大的改进,使其变得更加轻量级,降低了开发复杂性,使得开发者能够更专注于业务逻辑而...
**ejb3进阶案例详解** ejb3(Enterprise JavaBeans 3.0)是Java EE平台中的核心组件之一,它极大地简化了企业级应用程序的开发。ejb3引入了许多新特性和改进,使得开发人员可以更加高效地构建可扩展、可维护的企业...
本文将深入探讨EJB3中的Entity Bean,它是EJB3中的持久化组件,用于代表数据库中的实体。 1. **实体Bean的概念** 实体Bean是EJB3中的数据存储模型,它与数据库中的记录相对应。在EJB3中,实体Bean不再需要编写...
**EJB3应用实例** EJB(Enterprise JavaBeans)3是Java EE(Enterprise Edition)平台中的核心组件之一,主要用于构建可扩展、可移植且高度模块化的企业级应用程序。EJB3引入了许多重大改进,简化了开发流程,降低...
EJB3的三本好书第二本,最好的介绍ejb3的书,看过之后,其他的书都送人了,而且附带的源代码,几乎包括了所有的主流应用服务器的例子,glassfish, jboss, weblogic, oracleAS 3本书分别是: 1. Beginning EJB3 ...
EJB(Enterprise JavaBeans)3是Java平台企业版(Java EE)的一个核心组件,用于简化大型企业级应用的开发。自从EJB 3版本推出以来,它在简化实体管理、依赖注入和声明式服务等方面有了重大改进,使得开发者可以更加...
【ejb3-persistence】是Java企业版(Enterprise JavaBeans,EJB)3.0规范中的持久化模块,它是Java后端开发中的一个重要组件,主要处理数据库操作和对象关系映射(Object-Relational Mapping,ORM)。在Spring框架中...
**EJB3基础教程** Enterprise JavaBeans(EJB)是Java平台上用于构建可扩展、安全且事务处理能力强的服务器端应用程序的重要技术。EJB3是EJB规范的一个重大改进版本,它极大地简化了开发过程,引入了许多现代编程...
Struts2和EJB3是两个在Java Web开发中广泛使用的框架,Struts2主要用于处理MVC模式的前端控制,而EJB3则提供企业级的服务,如事务管理、安全性和持久化等。将这两者整合在一起,可以利用EJB3的强大功能来处理复杂的...
在这个实例练习中,我们将探讨EJB3的基本概念、特性以及如何创建和运行一个简单的EJB3应用。 1. EJB3概述 EJB3引入了注解驱动的编程模型,消除了XML配置文件的需求,大大减少了开发工作量。它包括三种主要类型的...
这个压缩包文件"**EJB3 入门经典 源码**"很可能是为了帮助初学者理解并学习EJB3的基本概念、设计模式和实际应用。 EJB3的主要特点包括: 1. **注解驱动(Annotation-Based)**:EJB3引入了注解,使得开发者无需...
EJB3是EJB规范的一个重要版本,它在EJB2的基础上进行了重大改进,极大地简化了开发流程,降低了学习曲线,提升了开发效率。 在"EJB3实战的源代码"这个资源中,我们可以深入学习和理解EJB3的各种特性。EJB3引入了...
### EJB3规范简体中文版关键知识点解析 #### 一、引言 EJB (Enterprise JavaBeans) 是 Java 平台为企业级应用程序提供的一种组件模型。随着技术的发展,EJB 经历了多个版本的迭代,其中 EJB 3.x 版本引入了大量的...