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

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

J2EE開發n層應用

2019-11-17 06:23:13
字體:
來源:轉載
供稿:網友

  摘要:在這篇文章中,我們將介紹13種J2EE(java 2平臺企業版)的核心技術:JDBC,JNDI,EJBs,RMI,jsp,Java servlets,xml,JMS,Java IDL,JTS,JTA,JavaMail和JAF。為了更好地說明這些技術在實際中的應用,本文將通過BEA System的WebLogic Server來介紹。
  Java起初是運用在瀏覽器和客戶計算機上的,當時,很多人都懷疑它是否適合用作服務端的開發。現今,隨著越來越多的第三方對Java 2平臺企業版(J2EE)的支持,Java已經被廣泛用來開發企業級的服務器端應用。
  J2EE平臺包含有一整套的服務、應用編程接口(API)和協議,可用于開發多層的基于Web的應用。
  在這篇文章中,我們將討論構成J2EE的13種核心技術:JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail和JAF。我們將介紹每種技術適合用在哪里;我們還將介紹每種不同的技術之間是如何通信的。
  為了更好地說明J2EE在現實中的應用,我們將通過WebLogic Server來介紹其中主要的技術,WebLogic Server來自BEA Syetem,它是一個廣泛使用的J2EE工具。要注重的是,這篇介紹性文章的閱讀對象是對WebLogic Server和J2EE不熟悉的開發者、以及對J2EE感愛好的項目經理和商業分析者。
  分布式體系和J2EE
  以前,兩層的應用--也稱為客戶/服務器應用是很常見的。圖1表示的就是一個典型的兩層體系。在一些情況下,服務器提供的唯一服務就是數據庫服務。在這種情形下,客戶端負責數據訪問、應用商業邏輯、將結果轉換為一個格式以便顯示,為用戶顯示內部的接口,以及接受用戶的輸入。客戶/服務器的體系在開始的時候很輕易配置,不過難于升級或者擴展,而且通常基于私有的協議--典型的是私有的數據庫協議。商業和表現邏輯的重新使用也很難。在Web領域中,可能最重要的就是擴展,而兩層的應用不便于升級擴展,因此不適合用在Internet。
   J2EE開發n層應用
  **圖1***************
  (兩層的應用體系)
  為了解決這個兩層體系的不足,Sun設計了J2EE。J2EE定義了一套標準,可輕松地開發n層的企業應用。它定義了一套標準化、模塊化的組件;并為這些組件提供了一整套完整的服務;以及自動處理應用行為的許多細節---例如安全和多線程。
  使用J2EE來開發n層的應用,要將原來的2層體系細分為多個不同的層。一個n層的應用能夠為以下的每個服務提供獨立的層:
  表現:在一個典型的Web應用中,運行在客戶機器上的瀏覽器負責處理表現
  動態產生表現:雖然瀏覽器可以處理一些動態產生的表現,不過為了支持多種不同的瀏覽器,大部分的動態產生都應該在Web服務器進行,通過使用JSP,servlet或者XML(Extensible Markup Language,擴展標記語言)和XSL(Extensible Stylesheet Language,擴展樣式表語言)。
  商業邏輯:實現商業邏輯的最佳方法是通過session EJB(下文將會提及)。
  數據訪問:實現數據訪問的最佳方法是在Entity EJB(下文將會提及),以及使用JDBC。
  Backend系統集成:可使用各種不同的技術來與backend系統集成。最佳的選擇在于backend系統的確切種類。
  你也許會問:為什么要這么多層呢?這是由于分層的方法可得到一個更便于擴展的企業應用。它可讓每個層集中在一個特定的角色上--例如,讓一個Web服務器提供網頁服務,一個應用服務器來提供給用服務,以及一個數據庫服務器來提供數據庫服務。
  由于J2EE構建在Java 2平臺標準版本上(J2SE),因此它可提供與J2SE一樣的所有優點和特色。包括有“寫一次,到處運行”的便利、用作數據庫訪問的JDBC,與現有企業資源交互的CORBA技術,以及一個經過驗證的安全模型。在這個基礎上,J2EE還加入了對企業JavaBean(EJB)組件、Java servlets, JavaServer Pages (JSPs)和XML技術的支持。
  WebLogic Server的分布式體系
  J2EE提供了一個框架--一個標準的API--用作開發分布式的體系。實現這個框架的引擎工具留給第三方廠商完成。一些廠商將著重于實現J2EE體系中的某些組件。例如,Apache的Tomcat為JSP和servlet提供支持。BEA System通過它的WebLogic Server產品實現了J2EE的全部特性。
  通過提供J2EE規范的一個完整實現,WebLogic Server可用來建立及配置易于擴展和分布式的應用。WebLogic Server和J2EE為你處理一些常見的編程任務。包括有提供事務服務,安全領域、認證信息、命名和目錄服務、數據庫訪問和連接池、線程池、負載均衡和容錯。
  通過以一種易于使用和標準的方式提供這些常見的服務,類似WebLogic Server的產品可提供更富擴展性和便于維護的應用。結果是可為大量的用戶提供可用性更強的應用。
  J2EE技術
  在以下的部分中,我們將討論構成J2EE的每一種技術,并且看看WebLogic Server如何在一個分布式的應用中支持它們。最常用的J2EE技術可能是:JDBC, JNDI, EJB, JSPs和servlets,因此我們也著重討論這些方面。
  圖2表示了在一個分布式的應用中,每項J2EE技術最常用在哪里。
  ****圖2************
  (n層應用體系的一個例子)
  Java數據庫連接(JDBC)
  JDBC API以一個統一的方式訪問各種數據庫。與ODBC類似,JDBC將開發者和私有數據庫之間的問題隔離開來。由于它建立在Java上,因此JDBC可以提供平臺無關的數據庫訪問。
  JDBC定義了4種不同的驅動,具體來說,包括有:
  類型1:JDBC-ODBC橋
  在JDBC剛產生時,JDBC-ODBC橋是非常有用的。通過它,開發者可以使用JDBC來訪問一個ODBC數據源。缺點是,它需要在客戶機器上安裝有一個ODBC驅動,該機器通常是應該運行微軟Windows系統的。使用這一類的驅動器,你就會失去JDBC平臺無關的好處。此外,ODBV驅動器需要客戶端的治理。
  類型2:JDBC-native驅動橋
  JDBC-native驅動橋提供了一個建筑在本地數據庫驅動上的JDBC接口--沒有使用ODBC。JDBC驅動將標準的JDBC調用轉變為對數據庫API的本地調用。使用類型2的驅動也會失去JDBC平臺無關性的好處,并且需要安裝客戶端的本地代碼。
  類型3:JDBC-network橋
  JDBC-network橋不需要客戶端的數據庫驅動。它們使用網絡-服務器中層來訪問一個數據庫。這會引出諸如負載均衡、連接池等技術,數據緩沖也是可能的。由于類型3的驅動通常可帶來相對小的下載時間,它是平臺無關的,并且不需要客戶端的安裝和治理,因此很適合用作Internet的應用。
  類型4:純Java驅動
  類型4使用純Java數據庫驅動來提供直接的數據庫訪問。由于類型4驅動運行在客戶端,并且直接訪問數據庫,因此運行在這個模式暗示要使用一個兩層的體系。要在一個n層的體系中使用類型4的驅動,可以通過一個包含有數據訪問代碼的EJB,并且讓該EJB為它的客戶提供一個數據庫無關的服務。
  WebLogic Server為一些很常用的數據庫提供了JDBC驅動器,包括有Oracle、Sybase、Microsoft SQL Server, 和Informix。它還帶有一個Cloudscape的JDBC驅動,這是一個純Java DBMS,不過WebLogic Server自帶的是一個評估版本。
  接著我們來看一個例子。
  JDBC例子
  在例子中,我們假設你已經在Cloudscape中設置了一個PhoneBook數據庫,該數據庫包含有一個CONTACT_TABLE表,里面有NAME和PHONE字段。我們首先載入Cloudscape的JDBC驅動,接著向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();
  }
  }
  }
  接著,我們將介紹JDBC在企業應用中的使用。
  企業應用中的JDBC
  上面的例子是很簡單的。它使用的仍然是一個兩層的體系。在一個n層的企業應用中,客戶將與一個EJB通信,并且會進行數據庫的連接。為了提高擴展性和性能,WebLogic Server提供連接池(connection pools)的支持。
  通過在服務器啟動的時候建立一個數據庫的連接池,連接池可減少建立和中斷數據庫連接時的系統開銷。假如有數據庫連接的需求,WebLogic Server可從池中選擇一個,而不是創建一個。WebLogic Server的連接池在weblogic.properties中定義(具體可參考你的weblogic.properties中的例子和Weblogic Server中的文檔)。
  另一個企業應用中經常用到的數據庫特性是支持事務。事務是一組語句,不過為了保持數據的完整性,這組語句都被看成是一個單一的語句。默認的情況下,JDBC工作在自動提交(auto-commit)的事務模式。你可以使用Connection類的setAutoCommit()方法來覆蓋它。
  現在我們對JDBC已經有一個了解了。接著我們將介紹JNDI。
  Java命名和目錄接口(Java Naming and Directory Interface,JNDI)
  JN

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潞西市| 专栏| 休宁县| 老河口市| 西宁市| 中阳县| 璧山县| 大城县| 通许县| 仪陇县| 竹溪县| 德格县| 分宜县| 平昌县| 梁平县| 博罗县| 保山市| 隆安县| 安阳县| 陈巴尔虎旗| 玛纳斯县| 曲靖市| 安徽省| 平安县| 翼城县| 宝鸡市| 黄山市| 凯里市| 吉木萨尔县| 景洪市| 师宗县| 京山县| 双牌县| 正阳县| 东山县| 策勒县| 邛崃市| 雷波县| 玛纳斯县| 徐水县| 霍州市|