国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用EJB 3.0簡化企業Java開發(上)

2019-11-18 15:59:25
字體:
來源:轉載
供稿:網友

上篇:使用注釋開發POJO服務

對開發服務器端應用程序而言,java企業版本即Java EE(以前叫J2EE)是一個功能強大、但又過于復雜的平臺。很早以來,過于復雜歷來被認為是阻礙人們采用Java EE的一個重要因素。

但在過去的三年,Java開放源代碼社區、Java社區組織(JCP)以及主要的Java EE開發商都在致力于簡化Java EE。譬如說,實際的應用程序使用新的設計范例來簡化Java EE的開發,譬如普通Java對象(POJO)服務、服務攔截器和依靠注入。而諸多新的工具和框架也得到了廣泛采用,用于同樣的目的,譬如Hibernate、面向方面編程(AOP)、Struts、XDoclet和SPRing。

這些模式和工具讓剛入門的開發人員更輕易上手,同時提高了經驗豐富的Java開發人員的生產力,目前它們正在被JCP集成到下一代Java EE標準(即EJB 3.0)當中。Java開發人員Raghu Kodali最近開展的一項調查表明,把Sun的Java EE示例應用程序RosterApp從EJB 2.1移植到EJB 3.0可以減少50%以上的代碼。

Java注釋是EJB3.0的重要特性,它把POJO服務、POJO持久性和依靠注入聯系起來,成為完整的企業中間件解決方案。本文使用了一個示例應用程序:JBoss EJB 3.0 TrailBlazer,以演示開發添加注釋的輕便型EJB 3.0 POJO應用程序。TrailBlazer應用程序多次使用EJB 3.0中的不同工具和API,實現了一個投資計算器。示例應用程序在JBoss 應用服務器4.0.3里面以非傳統方式運行,完全符合最新的EJB 3.0規范(公眾預覽版)。

EJB 3.0的注釋驅動編程模型

從開發人員的角度來看,EJB 3.0廣泛使用Java注釋。注釋有兩個重要優點:它們取代了過多的xml配置文件,而且不需要嚴格的組件模型。

注釋與XML

基于XML的部署描述符和注釋都可以用來配置Java EE應用程序中的服務相關屬性。兩者的區別在于:XML文件與代碼分開處理(往往在運行時);而注釋與代碼一起編譯,而且由編譯器進行檢查。這對開發人員產生了以下這些重要影響:

● 冗長性:XML配置文件以冗長出名。為了配置代碼,XML文件必須從代碼地方復制許多信息,譬如類名稱和方法名稱。另一方面,Java注釋卻是代碼的一部分,不需要另外引用代碼,就可以指定配置信息。

● 健壯性:XML配置文件中的復制代碼信息帶來了多個潛在故障點。譬如說,假如拼錯了XML文件中的方法名稱,應用程序會在運行時出錯。換句話說,XML配置文件不如注釋來得健壯。注釋可以由編譯器來檢查,同代碼的其余部分一起處理。

● 靈活性:因為XML文件與代碼分開處理,所以基于XML的配置信息不是“硬編碼”的,以后可以改動。部署時間的靈活性對系統治理員來說是一項很好的特性。

注釋使用簡單,足以滿足大多數應用程序的要求。XML文件比較復雜,可用來處理更高級的問題。EJB 3.0答應通過注釋來配置大多數應用程序的設置。EJB 3.0還支持XML文件用于取消默認的注釋值、配置外部資源(如數據庫連接)。

POJO與嚴格組件

除了取代及簡化XML描述符外,注釋還可以讓我們棄用曾困擾EJB 1.x和EJB 2.x的嚴格的組件模型。

EJB 組件是容器治理的對象。容器在運行時操縱bean實例的行為和內部狀態。為了讓這種行為出現,EJB 2.1規范定義了bean必須遵守的嚴格的組件模型。每個EJB類必須從為容器提供回調鉤子(callback hook)的某個抽象類繼續而來。因為Java只支持單一繼續,嚴格的組件模型就限制了開發人員使用EJB組件創建復雜對象結構的能力。讀者會在本文下篇分看到,假如映射實體bean中復雜的應用程序數據,這更是個問題。

在EJB 3.0中,所有容器服務都可以通過注釋進行配置,并提供給應用程序里面的任何POJO。大多數情況下,不需要非凡的組件類。

開發松散耦合的服務對象

Java EE等企業中間件的最重要的好處之一就是,讓開發人員可以使用松散耦合的組件來開發應用程序。這些組件僅僅通過已發布的業務接口來進行耦合。因此,可在不改變應用程序其余部分的情況下,改變組件實現類。這樣使應用程序更健壯、更輕易測試,而且更輕易移植。EJB 3.0簡化了在POJO中構建松散耦合的業務組件。

會話bean

在EJB 3.0應用程序中,松散耦合的服務組件通常作為會話bean來實現。會話bean要有一個接口(即業務接口),那樣其他應用程序的組件就可以通過它使用其服務。下面的代碼為我們的示例投資計算器服務提供了業務接口。根據投資者開始投資時及終止投資時的年齡、基金增長率及每月儲蓄額,它只有一個方法來計算總的投資回報。

public interface Calculator {

public double calculate (int start, int end, double growthrate, double saving); }

會話bean類僅僅實現了業務接口。必須通過為其添加無狀態或者有狀態的注釋,告訴EJB 3.0容器這個POJO類是會話bean。有狀態的會話bean可以在幾個不同的服務請求期間保持客戶端狀態。與之相反,無狀態的會話bean的請求每次都是由隨機的會話bean實例來處理。其行為與原來EJB 2.1中的有狀態和無狀態的會話bean的行為相一致。EJB 3.0容器計算出什么時候為bean對象創建實例,然后通過業務接口來提供。下面是會話bean實現類的代碼:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 遵义县| 万宁市| 慈利县| 聊城市| 和田市| 泽库县| 浦北县| 四川省| 天水市| 察隅县| 海淀区| 德化县| 上高县| 昆山市| 安化县| 云霄县| 乐亭县| 静宁县| 武安市| 德昌县| 信阳市| 花莲市| 靖远县| 连云港市| 玛曲县| 揭阳市| 阳原县| 鸡西市| 云浮市| 荥经县| 武山县| 夏河县| 无极县| 禄劝| 连城县| 奈曼旗| 武定县| 广州市| 固原市| 溧阳市| 巍山|