`

ejb3

阅读更多
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的三本好书第2本, EJB3 in Action 2007

    EJB3的三本好书第二本,最好的介绍ejb3的书,看过之后,其他的书都送人了,而且附带的源代码,几乎包括了所有的主流应用服务器的例子,glassfish, jboss, weblogic, oracleAS 3本书分别是: 1. Beginning EJB3 ...

    ejb3中文版

    ejb3中文版

    ejb3-persistence.jar

    【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企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...

    \websphere部署EJB3.docx

    创建一个或多个EJB项目,例如`EJB3`,每个EJB项目都将对应一个jar包,建议遵循命名规范,如`XXXEJBModule.jar`。同样,这些EJB项目也需要添加到`WEBEJB3`项目中。 4. **部署到WebSphere**: 使用RAD,可以直接...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...

    struts2-ejb3配置

    Struts2和EJB3是两个在Java Web开发中广泛使用的框架,Struts2主要用于处理MVC模式的前端控制,而EJB3则提供企业级的服务,如事务管理、安全性和持久化等。将这两者整合在一起,可以利用EJB3的强大功能来处理复杂的...

    ejb3功能测试测试

    工作之余亲自对ejb3进行相应功能的测试 其中包括基本的客户端与服务器分离式测试(分成两个单独的项目进行测试)sessionBean测试、entityBean测试、messageDriverBean测试,服务器采用jboss4,客户端可以放在tomcat...

    EJB2和EJB3的架构异同.doc

    &lt;persistence-unit name="Ejb3Tutorial"&gt; &lt;jta-data-source&gt;java:/TestDS ``` EJB3.0还引入了拦截器(Interceptors)的概念,类似于面向切面编程(AOP)中的拦截器。开发者可以定义拦截器方法,这些方法...

    eclipse + JBoss 5 + EJB3开发指南

    (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持久化

    【EJB3持久化】是Enterprise JavaBeans 3.0版本中的一个重要特性,它引入了更轻量级的持久化模型,旨在简化企业级应用程序的数据持久化操作。EJB3.0不再局限于传统的EJB2.1实体Bean,而是采用了POJO(Plain Old Java...

    Ejb3中的注释常用属性

    EJB3,全称Enterprise JavaBeans 3.0,是Java EE平台的一部分,它引入了大量注解来简化企业级组件的开发。其中,@EJB注释是用于依赖注入(Dependency Injection)的关键元素,使得开发者能够直接在类中声明并注入EJB...

    ejb3_structs

    ejb3_structs ejb and jboss

    ejb3 带源码

    Mastering+EJB3 EJB3+IN+ACTION Beginning+EJB3+Application+Development

    hibernate-ejb3-persistence.jar.zip

    在使用Hibernate3的时候,发现程序编译好了,在运行时总是抛出java.lang.NoClassDefFoundError: javax/persistence/EntityListeners异常,经查找是因为缺少ejb3-persistence.jar包。应该是这个~

    EJB3(中文版)EJB3(中文版)

    EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)EJB3(中文版)

    EJB3的三本好书第3本 Mastering EJB3 4ed

    EJB3的三本好书之三,也很不错的一本ejb3的书籍,是英文版,附带源代码,这本书的好处是与Mastering EJB 3ed有一定的继承性,可以对比来看. 3本书的地址 1. Beginning EJB3 Application Development From Novice to ...

    EJB3开发Entity

    EJB3开发Entity EJB3开发Entity

    EJB3一对多和多对一关系映射实例

    EJB3一对多和多对一关系映射实例

Global site tag (gtag.js) - Google Analytics