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
總結
以上是生活随笔為你收集整理的JBoss AS 8中的Java EE 7和EJB 3.2支持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信理财通为什么一天都没有收益?
- 下一篇: 理财风险评测失效是什么意思?