<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    J2EE簡介

    1. J2EE (Java 2 Enterprise Edition)架構

    近年來,J2EE平臺在企業內資訊應用系統的應用上,佔有越來越重要的地位,今天的內容,將先就J2EE的概念提供說明,而實作上的範例,我們將在後續的主題陸續提出討論。
    J2EE平臺提供了能支援多層(Multi-Tier)企業應用程式的技術規格,這些技術主要分為三部份,分別是元件(Component),服務(Service)及通訊(Communication)。
    元件技術讓程式開發者能夠遵循標準方式建立可重用的元件,相同的企業邏輯可因此運用在不同的應用程式內。在這些元件中,可以透過標準化的API使用執行環境提供的服務以及準備好的資源,比如資料庫、名稱及目錄服務(Naming and Directory)、訊息服務(Messaging Service),並可使用交易(Transaction)管理等,這樣一來,也簡化了程式開發的複雜性。在多層架構下,各層間的通訊在J2EE中也提供解決方法。以下將針對元件及常見服務,提供介紹。


    J2EE 的大略架構如下圖:

    Client端如為Web Browser,則須穿過Web Container,透過JSP及Servlet呼叫EJB的方法(Method),以存取後端資料。如Client為使用Swing撰寫之Application,則不須經過Web Container,而是直接呼叫EJB提供的方法。


    2. EJB

    EJB(Enterprise JavaBeans)可看成是一組API的定義,它定義了的EJB開發及部署(Deploy)的方法以及架構。EJB具有架構上的延展性、可定義對交易的反應,而且能設定對不同使用者的存取控制。由於EJB Container提供了Networking, Transaction, Security及Bean Instance Pooling等Logic,因此EJB在EJB Container內執行,可以不須煩惱網路等問題,且可使用EJB Container已經準備好的服務。EJB分為三種,分述如下。

    2.1. Session Bean
    Session Bean通常在一個Client與EJB的一個Session期間存在,但是真實物件的生命週期是由EJB Container控制。一般的應用是將商業邏輯拆解成一個一個方法(Method),再將這些方法在Session Bean中實作,讓EJB Client呼叫使用。Session Bean又分為Stateful及Stateless,而Stateless Session Bean能支援同時多人使用,除非一定要儲存狀態於Session Bean內,否則建議使用Stateless Session Bean。

    2.2. Entity Bean
    Entity Bean是表達資料儲存內容的EJB,雖然Entity Bean目前Persistence作法以將資料存放在Database為主,但不表示僅能使用關聯式資料庫儲存。就實務上來看,在資料查詢所須的SQL Statement較複雜的情況下,則不建議使用Entity Bean,此時直接使用JDBC存取資料庫會是比較方便的作法。

    2.3. MDB(Message-driven Bean)
    MDB顧名思義是由Message驅動的EJB,提供J2EE平臺對非同步訊息(Asynchronized Messages)的處理能力。目前MDB僅能處理透過JMS(Java Message Service)傳遞的Message,其運作原理是實作一個onMessage方法,這樣當JMS內有Message要交由MDB處理時,會由EJB Container從Pool中選一個MDB出來,接著呼叫它的onMessage方法。

    3. J2EE平臺提供之服務及API

    接下來介紹一些常用的J2EE的API,這些服務執行在J2EE Server內,可在Web Container及EJB Containaer內使用。

    3.1. JDBC

    JDBC (Java DataBase Connectivity)主要提供連結至Data Source的方式,Data Source不只是Database,還包括檔案。

    JDBC Driver 主要的工作有三項:
    a. 建立和Data Source之間的Connection。
    b. 送出相關的SQL Statement。
    c. 將結果傳回。

    JDBC除了可以送出一般的SQL Statement之外,也可以呼叫寫好在Database裡的Stored Procedure。

    由於各種Database的連結方式可能都不同,使用JDBC的好處是,不須要自己去寫存取 Database的相關程式,只要使用DBC的API,搭配相關的Driver,就可以讓程式存取各種不同的Database了。
    目前最新版的JDBC 規格是 4.0,但是,在使用JDBC的相關功能之前,要先確認所使用的JDBC Driver支援到哪一個版本。

    JDBC最新的一個Implement叫做RowSet Implementation Specification,是就JDBC原本提供的RowSet再做更進一步的強化。這個部份將會被納入J2SDK1.5中。


    3.2. Servlet
    Servlet是用來處理Request和Response的一些Class,主要是處理HTTP Protocol。它的Package主要有javax.servlet和javax.servlet.http。

    在最新的Servlet 2.3 規格裡,新增了一個叫做「Filter」的功能,Filter的作用是在Request送出之後、以及Response接到之前,再做一個判斷篩選的動作。這個Filter最常用在Reuse原本的程式的時候,為了確保原本的程式結構不被修改,但又須要加上一些新的設定時,就可以使用Filter去做處理,Filter所做的事情也都可以被Log下來。


    3.3. JSP
    JSP的全名是JavaServer Pages,算是Servlet技術的延伸,可以使用HTML或是XML。JSP提供了一個Create Web Content的簡便方式,在搭配JSTL(JavaServer Pages Standard Tag Library)使用的時候,由於JSTL提供了一些很簡便的Tag,所以在程式的撰寫和維護上都會容易許多。目前JSP 規格的最新版本是2.0。

    早期在還沒有JSP的時候,程式和畫面的呈現都會放在Servlet裡,造成維護非常困難,在有JSP之後,可以將程式碼以及畫面切開,在維護上會比全部的東西都放在Servlet裡要方便得多。

    3.4. JMS
    JMS, Java Message Service, 提供了J2EE Components進行相關的Message的功能。一個JMS的應用程式可以分為以下幾個部份:
    a. JMS Clients:是使用JMS API所開發的用來傳送/接收Message的應用程式。
    b. Non-JMS Clients:這些應用程式並沒有使用JMS的API,而是使用Message System所提供的API。
    c. Messages:定義好的一些用在Clients之間溝通的訊息。
    d. JMS Provider:Message System所定義好的,使用JMS來開發的一些功能。
    e. Administered Objects:提供給系統管理者方便使用的預先定義好的JMS Objects。


    3.5. JNDI
    JNDI, Java Naming and Directory Interface,主要是提供Naming和Directory的相關功能,使得應用程式可以更具可攜性(Portable)。應用程式中若使用JNDI相關的API來開發,只要在設定的時候指定JNDI的名稱,就可以存取不同的Directory裡的屬性(Attribute)。JNDI的相關Package有:javax.naming、javax.naming.directory、javax.naming.event、javax.naming.ldap、和javax.naming.spi。

    3.6. Transactions
    J2EE提供了兩組Transactions相關的規格,分別是JTA(Java Transaction API)和JTS(Java Transaction Services)。

    JTA提供了控制Transaction的相關API,程式是去呼叫JTA的API,再由JTA來交給JTS做控制。所提供的Package有javax.transaction和javax.transaction.xa。目前不Support NestedTransactions。在EJB裡,建議使用Bean-managed Transaction,也就是Session Bean或是Message-driven Bean,且在使用的時候,必須先定義目前要用的是JDBC的Transaction或者是JTA的Transaction。

    3.7. Web Services
    在J2EE的架構中,提供了許多有關Web services的API,這些API都是以XML的語法來定義。
    Web Services 相關的API有 JAXP(Java API for XML Processing)、JAXR(Java API for XML Registries)、JAX-RPC(Java API for XML-based RPC)和SAAJ(SOAP with Attachments API for Java)等。
    簡單介紹一下這幾個API:
    a. JAXP:這組API被定義在javax.xml.parser這個Package裡,這個Package提供了SAX和DOM相關的Parser功能。
    b. JAXR:主要是提供存取不同的XML Registry的功能。XML Registry目前最有名的是ebXML和UDDI。
    c. SAAJ:主要是依循 SOAP這個標準,提供了Message和Connection的相關功能。

    posted on 2008-12-04 11:29 paulwong 閱讀(715) 評論(0)  編輯  收藏 所屬分類: J2EE

    主站蜘蛛池模板: 国产免费不卡v片在线观看| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 国产成人精品久久亚洲| 无码人妻精品一二三区免费| 国产白丝无码免费视频| 日日摸夜夜添夜夜免费视频| 天天爽亚洲中文字幕| 久久综合亚洲鲁鲁五月天| 狠狠亚洲婷婷综合色香五月排名| 毛片a级毛片免费播放下载| 在免费jizzjizz在线播| 免费观看成人久久网免费观看| 香蕉视频免费在线| 亚洲精品一卡2卡3卡四卡乱码| 亚洲免费人成视频观看| 亚洲黄网在线观看| 亚洲一区二区影院| 亚洲a一级免费视频| 久久精品国产精品亚洲蜜月| 亚洲色欲久久久综合网 | 九九综合VA免费看| 国产精品亚洲综合一区在线观看| 中文字幕亚洲码在线| 亚洲18在线天美| 亚洲a级成人片在线观看| 亚洲毛片无码专区亚洲乱| 亚洲精品线在线观看| 色婷婷六月亚洲婷婷丁香| 久久久久亚洲精品美女| 亚洲成年人在线观看| 久久久久亚洲精品无码蜜桃 | 老汉精品免费AV在线播放| 免费人成在线观看网站| 暖暖免费在线中文日本| 无码精品国产一区二区三区免费 | 亚洲成a人片在线观看日本麻豆| 午夜国产大片免费观看| 亚洲 综合 国产 欧洲 丝袜| 亚洲色偷拍区另类无码专区| 中文字幕亚洲激情| 久久久久久久尹人综合网亚洲|