JBoss AS 8中的Java EE 7和EJB 3.2支持

你们中有些人可能已经知道Java EE 7规范的Public Final Draft版本已经发布 。 除此以外,此版本的Java EE还引入了EJB规范的EJB 3.2版本。 与EJB 3.1规范相比,EJB 3.2具有一些新功能。 我在这里引用EJB 3.2规范中的文本,总结了新功能:

Enterprise JavaBeans 3.2体系结构扩展了Enterprise JavaBeans,以包括以下新功能和对早期EJB API的简化:


    • 在此发行版中,以下功能的支持成为可选的,其描述移至单独的EJB可选功能文档:
      • EJB 2.1和更早版本的Entity Bean组件协定,用于容器管理的持久性
      • EJB 2.1和更早版本的Entity Bean组件协定,用于Bean管理的持久性
      • EJB 2.1和更早版本的实体Bean的客户端视图
      • EJB QL:容器管理的持久性查询方法的查询语言
      • 基于JAX-RPC的Web服务端点
      • JAX-RPC Web服务客户端视图
    • 向EJB 3.2 Lite添加了对本地异步会话Bean调用和非持久EJB计时器服务的支持。
    • 取消了获取当前类加载器的限制; 使用Java I / O软件包时,将“必须”替换为“应谨慎行事”。
    • 为有状态会话Bean的生命周期回调拦截器方法添加了一个选项,该选项将在由生命周期回调方法的transaction属性确定的事务上下文中执行。
    • 添加了一个选项来禁用有状态会话Bean的钝化。
    • 扩展了TimerService API,以查询同一EJB模块中的所有活动计时器。
    • 删除了对javax.ejb.Timer和javax.ejb.TimerHandle引用的限制,这些限制仅在bean内部使用。
    • 宽松的默认规则,用于将会话Bean的已实现接口指定为本地或远程业务接口。
    • 增强了标准激活属性列表。
  • 通过实现AutoClosable接口增强了可嵌入的EJBContainer。

可以看出,建议的某些更改是次要的。 但是有一些有用的重大更改。 我们将在本文中介绍几个这样的更改。

1)新的API TimerService.getAllTimers()

EJB 3.2版本在javax.ejb.TimerService接口上引入了一个名为getAllTimers的新方法。 以前,TimerService接口具有(并且仍然具有)getTimers方法。 期望getTimers方法返回活动计时器,该活动计时器适用于调用了该方法的TimerService的bean(请记住:每个EJB有一个TimerService)。

在这个新的EJB 3.2版本中,预期新添加的getAllTimers()方法将返回适用于*同一EJB模块中的所有bean *的所有活动计时器。 通常,EJB模块对应于EJB jar,但如果将EJB打包在.war中,它也可以是.war部署。 这个新的getAllTimers()方法是一种方便的API,适合需要在该bean所属的EJB模块内查找所有活动计时器的用户应用程序。

2)能够禁用有状态bean的钝化

那些熟悉EJB的人会知道EJB容器为有状态Bean提供钝化(将有状态Bean的状态存储到某些辅助存储)和激活(将有状态Bean的保存状态加载)功能。 但是,如果用户应用程序希望这样做,则以前的EJB版本没有可移植的方式来禁用状态Bean的钝化。 新的EJB 3.2版本引入了一种方法,用户应用程序可以确定有状态的bean是否可以被钝化。

默认情况下,有状态Bean被认为具有“钝化能力”(类似于EJB的旧版本)。 但是,如果用户想禁用某些状态Bean的钝化支持,则用户可以选择通过注释或通过ejb-jar.xml部署描述符禁用它。 进行注释的方法就像将@ javax.ejb.Stateful注释上的passivationCapable属性设置为false一样简单。 就像是:

@javax.ejb.Stateful(passivationCapable=false) // the passivationCapable attribute takes a boolean value  
 public class MyStatefulBean {  
 ....  
 }

在ejb-jar.xml中执行以下操作:

<?xml version="1.0" encoding="UTF-8"?>  
 <ejb-jar xmlns="http://xmlns.jcp.org/xml/ns/javaee"  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  
      http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"  
      version="3.2">  
   <enterprise-beans>  
     <session>  
       <ejb-name>foo-bar-bean</ejb-name>  
       <ejb-class>org.myapp.FooBarStatefulBean</ejb-class>  
       <session-type>Stateful</session-type>  
       <!-- passivation-capable element takes either a true or a false value -->  
       <passivation-capable>false</passivation-capable>  
     </session>  
     ...  
   </enterprise-beans>  
 </ejb-jar>

ejb-jar.xml中需要注意的两个重要事项是ejb-上的version = 3.2属性(以及http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd模式位置) jar根元素和session元素下的具有钝化能力的元素。 因此,如果您愿意的话,使用这两种方法都可以使您对有状态Bean禁用钝化。

JBoss AS8中的Java EE 7和EJB 3.2支持:

自从该规范的Public Final Draft版本发布以来,JBoss AS8就一直增加了对Java EE 7的支持。 已经添加并提供了对EJB 3.2的支持。 Java EE 7的其他一些更改也使其适用于最新的JBoss AS 8版本。 要跟踪JBoss AS8中Java EE 7的变化,请关注JIRA https://issues.jboss.org/browse/AS7-6553

要总体上使用Java EE 7或特别是EJB 3.2的已实现功能,可以从此处下载JBoss AS的最新夜间版本/二进制文件。 试试看,让我们知道如何进行。 对于任何反馈,问题或者您遇到任何问题,请随时在我们的用户论坛开一个话题在这里

参考:来自Jaikiran My Wiki博客的JCG合作伙伴 Jaikiran Pai 在JBoss AS 8中支持Java EE 7和EJB 3.2

翻译自: https://www.javacodegeeks.com/2013/03/java-ee-7-and-ejb-3-2-support-in-jboss-as-8.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值