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

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

J2EE的13種核心技術(一)

2019-11-18 16:03:14
字體:
來源:轉載
供稿:網友

  java最初是在瀏覽器和客戶端機器中粉墨登場的。當時,很多人質疑它是否適合做服務器端的開發。現在,隨著對Java2平臺企業版(J2EE)第三方支持的增多,Java被廣泛接納為開發企業級服務器端解決方案的首選平臺之一。

J2EE平臺由一整套服務(Services)、應用程序接口(APIs)和協議構成,它對開發基于Web的多層應用提供了功能支持。

在本文中我將解釋支撐J2EE的13種核心技術:JDBC, JNDI, EJBs, RMI, jsp, Java servlets, xml, JMS, Java IDL, JTS, JTA, JavaMail 和 JAF,同時還將描述在何時、何處需要使用這些技術。當然,我還要介紹這些不同的技術之間是如何交互的。

此外,為了讓您更好地感受J2EE的真實應用,我將在WebLogic應用服務器,來自BEA Systems公司的一種廣為應用的產品環境下來介紹這些技術。不論對于WebLogic應用服務器和J2EE的新手,還是那些想了解J2EE能帶來什么好處的項目管理者和系統分析員,相信本文一定很有參考價值。

宏觀印象: 分布式結構和J2EE

過去,二層化應用 -- 通常被稱為client/server應用 -- 是大家談論的最多的。在很多情況下,服務器提供的惟一服務就是數據庫服務。在這種解決方案中,客戶端程序負責數據訪問、實現業務邏輯、用合適的樣式顯示結果、彈出預設的用戶界面、接受用戶輸入等。client/server結構通常在第一次部署的時候比較容易,但難于升級或改進,而且經常基于某種專有的協議,通常是某種數據庫協議。它使得重用業務邏輯和界面邏輯非常困難。更重要的是,在Web時代,二層化應用通常不能體現出很好的伸縮性,因而很難適應Internet的要求。

Sun設計J2EE的部分起因就是想解決二層化結構的缺陷。于是,J2EE定義了一套標準來簡化N層企業級應用的開發。它定義了一套標準化的組件,并為這些組件提供了完整的服務。J2EE還自動為應用程序處理了很多實現細節,如安全、多線程等。

用J2EE開發N層應用包括將二層化結構中的不同層面切分成許多層。一個N層化應用A能夠為以下的每種服務提供一個分開的層:

顯示:在一個典型的Web應用中,客戶端機器上運行的瀏覽器負責實現用戶界面。

動態生成顯示: 盡管瀏覽器可以完成某些動態內容顯示,但為了兼容不同的瀏覽器,這些動態生成工作應該放在Web服務器端進行,使用JSP、Servlets,或者XML(可擴展標記語言)和(可擴展樣式表語言)。

業務邏輯:業務邏輯適合用session EJBs(后面將介紹)來實現。

數據訪問:數據訪問適合用Entity EJBs(后面將介紹)和JDBC來實現。

后臺系統集成: 同后臺系統的集成可能需要用到許多不同的技術,至于何種最佳需要根據后臺系統的特征而定。

您可能開始詫異:為什么有這么多的層?事實上,多層方式可以使企業級應用具有很強的伸縮性,它允許每層專注于特定的角色。例如,讓Web服務器負責提供頁面,應用服務器處理應用邏輯,而數據庫服務器提供數據庫服務。

由于J2EE建立在Java2平臺標準版(J2SE)的基礎上,所以具備了J2SE的所有優點和功能。包括“編寫一次,到處可用”的可移植性、通過JDBC訪問數據庫、同原有企業資源進行交互的CORBA技術,以及一個經過驗證的安全模型。在這些基礎上,J2EE又增加了對EJB(企業級Java組件)、Java servlets、Java服務器頁面(JSPs)和XML技術的支持。

分布式結構與WebLogic應用服務器

J2EE提供了一個框架--一套標準API--用于開發分布式結構的應用,這個框架的實際實現留給了第三方廠商。部分廠商只是專注于整個J2EE架構中的的特定組件,例如Apache的Tomcat提供了對JSP和servlets的支持,BEA系統公司則通過其WebLogic應用服務器產品為整個J2EE規范提供了一個較為完整的實現。

WebLogic服務器已使建立和部署伸縮性較好的分布式應用的過程大為簡化。WebLogic和J2EE代你處理了大量常規的編程任務,包括提供事務服務、安全領域、可靠的消息、名字和目錄服務、數據庫訪問和連接池、線程池、負載平衡和容錯處理等。

通過以一種標準、易用的方式提供這些公共服務,象WebLogic服務器這樣的產品造就了具有更好伸縮性和可維護性的應用系統,使其為大量的用戶提供了增長的可用性。

J2EE技術

在接下來的部分里,我們將描述構成J2EE的各種技術,并且了解WebLogic服務器是如何在一個分布式應用中對它們進行支持的。最常用的J2EE技術應該是JDBC、JNDI、EJB、JSP和servlets,對這些我們將作更仔細的考察。

Java Database Connectivity (JDBC)

JDBC API以一種統一的方式來對各種各樣的數據庫進行存取。和ODBC一樣,JDBC為開發人員隱藏了不同數據庫的不同特性。另外,由于JDBC建立在Java的基礎上,因此還提供了數據庫存取的平臺獨立性。

JDBC定義了4種不同的驅動程序,現分述如下:

類型 1: JDBC-ODBC Bridge

在JDBC出現的初期,JDBC-ODBC橋顯然是非常有實用意義的,通過JDBC-ODBC橋,開發人員可以使用JDBC來存取ODBC數據源。不足的是,他需要在客戶端安裝ODBC驅動程序,換句話說,必須安裝Microsoft Windows的某個版本。使用這一類型你需要犧牲JDBC的平臺獨立性。另外,ODBC驅動程序還需要具有客戶端的控制權限。

類型 2: JDBC-native driver bridge

JDBC本地驅動程序橋提供了一種JDBC接口,它建立在本地數據庫驅動程序的頂層,而不需要使用ODBC。 JDBC驅動程序將對數據庫的API從標準的JDBC調用轉換為本地調用。使用此類型需要犧牲JDBC的平臺獨立性,還要求在客戶端安裝一些本地代碼。

類型 3: JDBC-network bridge

JDBC網絡橋驅動程序不再需要客戶端數據庫驅動程序。它使用網絡上的中間服務器來存取數據庫。這種應用使得以下技術的實現有了可能,這些技術包括負載均衡、連接緩沖池和數據緩存等。由于第3種類型往往只需要相對更少的下載時間,具有平臺獨立性,而且不需要在客戶端安裝并取得控制權,所以很適合于Internet上的應用。

類型 4: Pure Java driver

第4種類型通過使用一個純Java數據庫驅動程序來執行數據庫的直接訪問。此類型實際上在客戶端實現了2層結構。要在N-層結構中應用,一個更好的做法是編寫一個EJB,讓它包含存取代碼并提供一個對客戶端具有數據庫獨立性的服務。

WebLogic服務器為一些通常的數據庫提供了JDBC驅動程序,包括Oracle, Sybase, Microsoft SQL Server以及Informix。它也帶有一種JDBC驅動程序用于Cloudscape,這是一種純Java的DBMS,WebLogic服務器中帶有該數據庫的評估版本。

以下讓我們看一個實例。

JDBC實例

在這個例子中我們假定你已經在Cloudscape中建立了一個PhoneBook數據庫,并且包含一個表,名為 CONTACT_TABLE ,它帶有2個字段:NAME 和 PHONE。 開始的時候先裝載Cloudscape JDBC driver,并請求 driver manager得到一個對PhoneBook Cloudscape數據庫的連接。通過這一連接,我們可以構造一個 Statement 對象并用它來執行一個簡單的SQL查詢。最后,用循環來遍歷結果集的所有數據,并用標準輸出將NAME和PHONE字段的內容進行輸出。




import java.sql.*;
public class JDBCExample
{
public static void main( String args[] )
{
try
{
Class.forName("COM.cloudscape.core.JDBCDriver");
Connection conn = DriverManager.getConnection("jdbc:cloudscape:PhoneBook");
Statement stmt = conn.createStatement();
String sql = "SELECT name, phone FROM CONTACT_TABLE ORDER BY name";
ResultSet resultSet = stmt.executeQuery( sql );
String name;
String phone;
while ( resultSet.next() )
{
name = resultSet.getString(1).trim();
phone = resultSet.getString(2).trim();
System.out.PRintln( name + ", " + phone );
}
}
catch ( Exception e )
{
// Handle exception here
e.printStackTrace();
}
}
}




OK。接著我們來看一看JDBC是如何在企業應用中的進行使用。

JDBC在企業級應用中的應用

以上實例其實是很基本的,可能有些微不足道。它假定了一個2層結構。在一個多層的企業級應用中,更大的可能是在客戶端和一個EJB進行通信,該EJB將建立數據庫連接。為了實現和改進可伸縮性和系統性能, WebLogic服務器提供了對連接緩沖池connection pool的支持。

Connection pool減少了建立和釋放數據庫連接的消耗。在系統啟動以后即可建立這樣的緩沖池,此后如故再有對數據庫的請求,WebLogic服務器可以很簡單地從緩沖池中取出數據。數據緩沖池可以在WebLogic服務器的 weblogic.properties 文件中進行定義。(可參考 weblogic.properties 文件中的例子,WebLogic服務器的文檔中還有更詳細的參考信息)

在企業級應用的另一個常見的數據庫特性是事務處理。事務是一組申明statement,它們必須做為同一個statement來處理以保證數據完整性。缺省情況下JDBC使用 auto-commit 事務模式。這可以通過使用Connection類的 setAutoCommit() 方法來實現。

現在我們已經對JDBC有了一些認識,下面該轉向JNDI了。

(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵩明县| 四平市| 高安市| 常山县| 阳谷县| 麻城市| 安化县| 辽源市| 理塘县| 太和县| 定安县| 镇坪县| 桐柏县| 旬阳县| 平舆县| 普陀区| 准格尔旗| 上虞市| 漳浦县| 利辛县| 万年县| 红安县| 新竹市| 个旧市| 韩城市| 五河县| 莱芜市| 海林市| 三江| 汪清县| 安仁县| 连山| 社旗县| 西乌| 田阳县| 彭阳县| 吉水县| 陆川县| 白沙| 花莲市| 龙州县|