J2EE(2)

Java Naming and Directory Interface (JNDI)   JNDI API被用於執行名字和目錄服務。它提供了一致的模型來存取和操作企業級的資源如DNS和LDAP,本地文件系統,後者在應用服務器中的對象。   在JNDI中,在目錄結構中的每一個結點稱爲context。每一個JNDI名字都是相對於context的。這裏沒有絕對名字的概念存在。對一個應用來說,它可以通過使用 InitialContext 類來得到其第一個context:   Context ctx = new InitialContext();   應用可以通過這個初始化的context經有這個目錄樹來定位它所需要的資源或對象。例如,假設你在Weblogic服務器中展開了一個EJB並將home接口綁定到名字 myApp.myEJB ,那麼該EJB的某個客戶在取得一個初始化context以後,可以通過以下語句定位home接口:   MyEJBHome home = ctx.lookup( "myApp.myEJB" );   在這個例子中,一旦你有了對被請求對象的參考,EJB的home接口就可以在它上面調用方法。我們將在下面的"Enterprise Java Beans"章節中做更多的介紹。   以上關於JNDI的討論只是冰山之一角而已。如果要更進一步地在context中查找對象,JNDI也提供了一些方法來進行以下操作:    將一個對象插入或綁定到context。這在你展開一個EJB的時候是很有效的。   從context中移去對象。   列出context中的所有對象。   創建或刪除子一級的context。   接下來,我們要開始關注EJB了。   Enterprise Java Beans (EJB)   J2EE技術之所以贏得某體廣泛重視的原因之一就是EJB。它們提供了一個框架來開發和實施分佈式商務邏輯,由此很顯著地簡化了具有可伸縮性和高度複雜的企業級應用的開發。EJB規範定義了EJB組件在何時如何與它們的容器進行交互作用。容器負責提供公用的服務,例如目錄服務、事務管理、安全性、資源緩衝池以及容錯性。   EJB規範定義了3中基本的bean類型:   Stateless session beans: 提供某種單一的服務,不維持任何狀態,在服務器故障發生時無法繼續存在,生命期相對較短。例如,一個stateless session bean可能被用於執行溫度轉換計算。   Stateful session bean: T提供了與客戶端的會話交互,可以存儲狀態從而代表一個客戶。典型例子是購物車。Stateful session bean在服務器故障時無法繼續生存,生命氣相對較短。每一個實例只用於一個單個的線程。   Entity beans: 提供了一致性數據的表示-- 通常存放在數據庫中 -- 在服務器故障發生後能繼續存在。多用戶情況下可以使用EJB來表示相同的數據。entity EJB的一個典型例子是客戶的帳號信息。   儘管有以上的區別,所有的EJB還是有許多的共同之處。它們都處理home interface。它定義了一個客戶端是如何創建與消亡EJB的。可以在bean中對定義了客戶端方法的遠程接口進行調用;bean類則執行了主要的商務邏輯。   描述EJB的開發已經超出了本文的範圍。但是,如果一個EJB已經被開發了或者從第三方進行了購買,它就必須在應用服務器中進行發佈。WebLogic Server 5.1帶有一個EJB Deployer Tool來協助處理EJB的發佈。當你使用EJB Deployer Tool的時候,你要定義客戶端所用的JNDI名字來定位EJB。Deployer Tool將生成wrapper類來處理和容器的通信以及在一個jar文件中把被請求的Java類綁定在一起。   一旦EJB被髮布,客戶端就可以使用它的JNDI名字來定位EJB。首先,它必須得到一個到home接口的reference。然後,客戶端可以使用該接口,調用一個 create() 方法來得到服務器上運行的某個bean實例的句柄;最後,客戶端可以使用該句柄在bean中調用方法。   瞭解 EJB後,讓我們再來看JSP。   JavaServer Pages (JSPs)   我們中間可能已經有許多人已經熟悉Microsoft的Active Server Pages (ASP)技術了。JSP和ASP相對應的,但更具有平臺對立性。他們被設計用以幫助Web內容開發人員創建動態網頁,並且只需要相對較少的代碼。 即使Web設計師不懂得如何編程也可以使用JSP,因爲JSP應用是很方便的。 JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端所請求以後對這些Java代碼進行處理,然後將生成的HTML頁面返回給客戶端的瀏覽器。   下面我們來看一個JSP的簡單實例。它只顯示了服務器的當前日期和時間。雖然,對語法的具體解釋已經超出了本文的範圍,但我們還是可以很直觀地看到,Java代碼被放在符號的中間,而Java的表達式則放在符號之間。   Date JSP sample   The current date is .   您可能有時候聽說過JHTML。這是JSP以前的一種較老的標準。WebLogic服務器既可支持JSP,又可支持JHTML。請注意,在缺省狀況下,JSP在WebLogic服務器中並沒有處於有效狀態。要使之有效,你可以編輯weblogic.properties文件。如果Web服務器還沒有處於有效狀態,則要先使之有效。Servlet的情況和JSP是一樣的。   下面是: Java servlets   Java servlets   servlet提供的功能大多與JSP類似,不過實現的方式不同。JSP通常是大多數HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成並且生成HTML。   servlet是一種小型的Java程序,它擴展了Web服務器的功能。作爲一種服務器端的應用,當被請求時開始執行,這和CGI Perl腳本很相似。Servlets和CGI腳本的一個很大的區別是:每一個CGI在開始的時候都要求開始一個新的進程 -- 而servlets是在servlet引擎中以分離的線程來運行的。因此servlets在可伸縮性上提供了很好的改進。   在開發servlets的時候,您常常需要擴展javax.servlet.http.HttpServlet 類,並且override一些它的方法,其中包括:   service(): 作爲dispatcher來實現命令-定義方法   doGet(): 處理客戶端的HTTP GET請求。   doPost(): 進行HTTP POST操作   其它的方法還包括處理不同類型的HTTP請求 -- 可以參考HttpServlet API文檔。   以上描述的是標準J2EE Servlet API的各種方法。WebLogic服務器提供了一個該API完整的實現途徑。一旦你開發了一個servlet,你就可以在weblogic.properties 中加以註冊並由此可以在WebLogic服務器中對它進行配置。   通過Java servlets,我們已經到達了J2EE主要技術的末尾了。但J2EE所提供的並不止於這些。下面的段落中我們將簡要地看一下現存的一些技術,包括RMI, Java IDL和CORBA, JTA, 以及XML,等等。   Remote Method Invocation (RMI)   正如其名字所表示的那樣,RMI協議是在遠程對象上調用一些方法。它使用了連續序列方式在客戶端和服務器端傳遞數據。RMI是一種被EJB使用的更下層的協議。   Java IDL/CORBA   在Java IDL的支持下,開發人員可以將Java和CORBA集成在一起。 他們可以創建Java對象並使之可在CORBA ORB中展開, 或者他們還可以創建Java類並作爲和其它ORB一起展開的CORBA對象的客戶。後一種方法提供了另外一種途徑,通過它Java可以被用於將你的新的應用和legacy系統相集成。   Java Transaction Architecture (JTA)/Java Transaction Service (JTS)   JTA定義了一種標準的API,應用系統由此可以存取各種事務監控。   JTS是CORBA OTS事務監控的基本的實現。JTS規定了事務管理器的實現方式。該事務管理器是在高層支持Java Transaction API (JTA)規範,並且在較底層實現OMG OTS specification的Java映像。JTS事務管理器爲應用服務器、資源管理器、獨立的應用以及通信資源管理器提供了事務服務。   JavaMail and JavaBeans Activation Framework   JavaMail是用於存取郵件服務器的API,它提供了一套郵件服務器的抽象類。不僅支持SMTP服務器,也支持IMAP服務器。   JavaMail利用JavaBeans Activation Framework (JAF)來處理MIME-編碼的郵件附件。MIME的字節流可以被轉換成Java對象,或者轉換自Java對象。由此大多數應用都可以不需要直接使用JAF。   Java Messaging Service (JMS)   JMS是用於和麪向消息的中間件相互通信的應用程序接口(API)。它既支持點對點的域,有支持發佈/訂閱(publish/subscribe)類型的域,並且提供對下列類型的支持:經認可的消息傳遞,事務型消息的傳遞,一致性消息和具有持久性的訂閱者支持。JMS還提供了另一種方式來對您的應用與legacy backend系統相集成。   Extensible Markup Language (XML)   XML是一種可以用來定義其它標記語言的語言。它被用來在不同的商務過程中共享數據。XML的發展和Java是相互獨立的,但是,它和Java具有的相同目標正是平臺獨立性。通過將Java和XML的組合,您可以得到一個完美的具有平臺獨立性的解決方案。目前正有許多不同的公司在爲Java和XML的組合而努力。如果要了解更多的這方面的信息,可以訪問Sun的Java-XML頁面,或者IBM developerWorks的XML Zone。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章