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”);
分享到:
相关推荐
EJB3的三本好书第二本,最好的介绍ejb3的书,看过之后,其他的书都送人了,而且附带的源代码,几乎包括了所有的主流应用服务器的例子,glassfish, jboss, weblogic, oracleAS 3本书分别是: 1. Beginning EJB3 ...
ejb3中文版
【ejb3-persistence.jar】是一个与EJB 3(Enterprise JavaBeans 3)相关的库,专注于持久化API。EJB 3是Java EE 5规范的重要组成部分,它在EJB 2.1的基础上进行了重大改进,特别是针对实体Bean的持久化处理。这个库...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
创建一个或多个EJB项目,例如`EJB3`,每个EJB项目都将对应一个jar包,建议遵循命名规范,如`XXXEJBModule.jar`。同样,这些EJB项目也需要添加到`WEBEJB3`项目中。 4. **部署到WebSphere**: 使用RAD,可以直接...
中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...
Struts2和EJB3是两个在Java Web开发中广泛使用的框架,Struts2主要用于处理MVC模式的前端控制,而EJB3则提供企业级的服务,如事务管理、安全性和持久化等。将这两者整合在一起,可以利用EJB3的强大功能来处理复杂的...
工作之余亲自对ejb3进行相应功能的测试 其中包括基本的客户端与服务器分离式测试(分成两个单独的项目进行测试)sessionBean测试、entityBean测试、messageDriverBean测试,服务器采用jboss4,客户端可以放在tomcat...
<persistence-unit name="Ejb3Tutorial"> <jta-data-source>java:/TestDS ``` EJB3.0还引入了拦截器(Interceptors)的概念,类似于面向切面编程(AOP)中的拦截器。开发者可以定义拦截器方法,这些方法...
(8):JBoss EJB3(HelloWorld)备忘记 15 摘要: 15 备忘记开始: 16 [1] 安装 jdk 5: 16 [2] 安装 JBoss EJB3: 16 [3] 第一次启动 JBoss: 18 [4] 安装 Eclipse WTP: 18 [5] 安装 JBoss IDE: 18 [6] 使用 ...
【EJB3持久化】是Enterprise JavaBeans 3.0版本中的一个重要特性,它引入了更轻量级的持久化模型,旨在简化企业级应用程序的数据持久化操作。EJB3.0不再局限于传统的EJB2.1实体Bean,而是采用了POJO(Plain Old Java...
EJB3,全称Enterprise JavaBeans 3.0,是Java EE平台的一部分,它引入了大量注解来简化企业级组件的开发。其中,@EJB注释是用于依赖注入(Dependency Injection)的关键元素,使得开发者能够直接在类中声明并注入EJB...
ejb3_structs ejb and jboss
Mastering+EJB3 EJB3+IN+ACTION Beginning+EJB3+Application+Development
在使用Hibernate3的时候,发现程序编译好了,在运行时总是抛出java.lang.NoClassDefFoundError: javax/persistence/EntityListeners异常,经查找是因为缺少ejb3-persistence.jar包。应该是这个~
EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)
EJB3的三本好书之三,也很不错的一本ejb3的书籍,是英文版,附带源代码,这本书的好处是与Mastering EJB 3ed有一定的继承性,可以对比来看. 3本书的地址 1. Beginning EJB3 Application Development From Novice to ...
EJB3开发Entity EJB3开发Entity
EJB3一对多和多对一关系映射实例