J2EE核心技術構成

來源:互聯網
上載者:User

標籤:伺服器   rmi   javabean   jdbc   ejb容器   

J2EE核心技術構成

EJB — J2EE的基石
CORBA — ORB是其核心
RMI
JSP
Java Servlet
JavaBean
JDBC
JMS
JTA

EJB概述

EJB模型特點
由一個EJB容器在運行時建立和管理EJB
在部署EJB時定製其運行方式
由EJB容器和伺服器協調用戶端的訪問
可以部署到任何相容的EJB容器中
用戶端對EJB的視圖由Bean開發人員決定
EJB規範內容
伺服器
容器
類和執行個體
Home和Remote介面
用戶端

EJB的運行環境,提供規範中定義的介面,使EJB類訪問所需的服務
容器廠商也可在容器或伺服器中提供額外服務介面

EJB伺服器

用於將客戶機層與資源管理層串連
提供系統服務程式,如安全性和事務
有一個支援實體Bean和會話Bean的標準容器
為EJB管理和配置提供服務
配置EJB的工具
安全服務
工作負載管理服務
持久性服務外命名服務
交易處理服務

會話Bean

有狀態bean
表示客戶與系統互動的短暫對象,操作完成後被刪除
每個使用者有一個會話bean
無狀態bean
不在客戶請求之間維護狀態資訊
所有無狀態會話Bean的執行個體都是相同的(無狀態會話Bean能支援多個用戶端)

實體bean

封裝業務實體或業務過程的實現的組件
是持久資料群組件,代表格儲存體在外部介質中的持久(Persistence)對象或現有公司專屬應用程式系統資源
實體bean的方法可以利用CMP(容器管理的持久性)或BMP(bean管理的持久性)來擷取資源管理員中的狀態
共用訪問
可以被多用戶端所共用
每一個實體bean執行個體都有一個唯一對象標識
這個唯一標識就是主鍵,可以讓用戶端找到對應的實體bean執行個體
與關聯式資料庫中的表一樣,實體bean之間也有關係
如在一個學校登記系統中,表示學生的StudentEJB和表示課程的CourseEJB因為學生必須登記上課而產生關係

EJB的客戶-視圖API

EJB本地介面
定義一些方法供用戶端create, remove,和find EJB對象使用
EJB遠程介面
定義EJB的業務方法,EJB所有的業務方法必須在遠程介面中定義才能被用戶端訪問
EJB類
實現在EJB遠程介面中定義的業務方法
Ejb-jar.xml
包含EJB組件的配置資訊

EJB類
Java類,實現業務方法及企業bean對象生命週期的方法
EJB客戶-視圖API:由EJB的home介面和EJB的remote介面構成
home介面定義create,remove及find方法,控制EJB對象的生命週期
remote介面定義客戶在特定EJB對象上可調用的業務方法

部署描述符
是一個XML文檔,包含有關這個EJB的聲明資訊
EJB名稱
Home和remote介面的名稱
EJB類名稱
EJB類型
EJB期望容器所提供服務的資訊,如交易處理
EJB的環境項

簡單EJB樣本

First.java(遠程介面)

import java.rmi.RemoteException;import javax.ejb.EJBObject;public interface First extends EJBObject {  public String Here() throws RemoteException;  public String There() throws RemoteException;}

FistHome.java(本地介面)

import java.rmi.RemoteException;import javax.ejb.CreateException;import javax.ejb.EJBHome;public interface FirstHome extends EJBHome{  public First create() throws RemoteException, CreateException;}
import java.rmi.*;import javax.ejb.*;public class FirstBean implements SessionBean {public void ejbCreate() {}  public void ejbRemove() throws RemoteException {}  public void ejbActivate() throws RemoteException {}  public void ejbPassivate() throws RemoteException {}  public void setSessionContext(SessionContext sessionContext) throws  RemoteException { this.sessionContext = sessionContext; }  public void Here(){    String strTarget = “I am here!”;    return strTarget;  } public void There(){    String strSource = “You are there!”;    return strSource ;  }}

First部署描述符

<!DOCTYPE ejb-jar PUBLIC ‘-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN‘ ‘http://java.sun.com/dtd/ejb-jar_2_0.dtd‘><ejb-jar> <enterprise-beans> <session><ejb-name>First</ejb-name><home> com.javausr.example.FirstHome</home><remote> com.javausr.example.First</remote><ejb-class> com.javausr.example.FirstBean</ejb-class><session-type>Stateless</session-type></session></enterprise-beans> </ejb-jar> 

用戶端調用

public class MyStandAloneClient {  public static void main(String[] args) {    try {            Context initial = new InitialContext(); //建立jndi初始化環境            Object objref = initial.lookup(“First"); //找到ejb的Remote Home Interface      FirstHome home =  (FirstHome)PortableRemoteObject.narrow(objref,           FirstHome.class);      First first = home.create(); //初始化ejb,得到Remote Interface first.here(); //調用商業方法sayHello()      System.exit(0);    } catch (Exception ex) {      System.err.println("Caught an unexpected exception!");      ex.printStackTrace();    }}
CORBA概述

Common Object Request Broker Architecture
是一個分布式對象體繫結構,獨立於平台及語言
在該體繫結構中,一個對象可以被本機上的客戶或遠程客戶通過方法啟用來存取
客戶(一個對象或應用)無須知道被調用對象(稱為服務物件)的運行環境,也無須知道實現這個對象的程式設計語言
客戶只要知道服務物件的邏輯地址和提供的介面
其互通性的關鍵是IDL(Interface Definition Language、介面定義語言)
IDL說明對象介面中的方法
這些方法可以被其它對象(或應用)啟用

RMI技術

Remote Method Invoke
是一種被EJB使用的更底層的協議,RMI協議調用遠程對象上方法,使用序列化方式在用戶端和伺服器端的對象之間傳遞資料
與CORBA對比
關鍵差別在於語言環境,Java RMI是純Java解決方案
CORBA未定義安全服務,Java RMI繼承了Java的安全性
CORBA有不同的實現
不同平台上的匹配比較困難,而且不是所有CORBA產品開發商都支援所有平台
但幾乎所有平台都支援Java虛擬機器,因此Java RMI具有更高的可移植性
IIOP已經提供了Java RMI和CORBA的互操作能力,而且兩者的發展有互相借鑒的趨勢

JSP 技術

在HTML語言中混合Java程式碼,由伺服器端Java語言引擎解釋執行
HTML負責描述資訊顯示格式,JSP負責描述處理邏輯
JSP代碼執行需要JSP引擎,如Tomcat和Apache
JSP開發的典型方式
直接使用:顯示簡單的動態效果
JSP + JavaBeans:需要與資料庫連接,管理諸如帳號之類的資訊
JSP + JavaBeans + Servlet:將事務邏輯與表現邏輯分開,JSP負責表現邏輯的處理和輸出,Servlet專註於處理Web的關鍵商務邏輯

JSP引擎的工作原理

將JSP頁面翻譯成一個Servlet(Java檔案)
JSP引擎調用Java編譯器對這個Servlet進行編譯,得到可執行檔class檔案
JSP引擎調用java虛擬機器來解釋執行class檔案,產生向用戶端發送的應答,然後發送給客戶
上述步驟在JSP頁面第一次被訪問時才會執行,以後會因為類檔案已經產生而提高效率

JSP和ASP的比較

相似之處
均是運行於伺服器,都屬於動態網頁產生技術
都使用HTML來決定網頁的版面,在HTML 程式碼中混合某種程式碼,由語言引擎解釋執行程式代碼
HTML負責描述顯示樣式,程式碼描述處理邏輯
區別
JSP基於JavaServlet及整個J2EE體系,支援跨平台
ASP由微軟推出,只能在Windows平台上運行
ASP下的程式設計語言是 VBScript 之類的指令碼語言,而JSP 使用的是Java
ASP 與 JSP 還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程式碼
在 ASP 下, VBScript 代碼被 ASP 引擎解釋執行
在 JSP 下,代碼被編譯成 Servlet 並由 JAVA 虛擬機器執行,這種編譯操作僅在對 JSP 頁面的第一次請求時發生

Servlet概述

Servlets=Server +Applet
運行於Web伺服器端的Java小程式,用來擴充Web伺服器功能
一種擴充Web伺服器功能的技術,且由於用Java編寫,所以能夠訪問整個Java API庫,包括用於訪問企業資料庫的JDBC API
用特定的Java解決方案替代了其它的Web服Servlets務器方編程模式(如:CGI,ISAPI等),因而繼承了Java的所有特性(跨平台、多線程、OO)
用來編寫Servlets的Servlet API對於伺服器環境和協議沒有任何特殊的要求,所以Servlets具有很強的可移植性,也不像利用CGI程式等其它方式那樣具有效能局限
Servlets也同樣使用HTTP協議與用戶端進行通訊,所以有時也稱Sevlets為“HTTP Servlets”

Servlet的主要對象

HTTPServletRequest對象
關於HTTP請求
請求Headers
查詢字串Query String
會話資訊Session
Cookies
HTTPServletResponse對象
用于格式化 HTTP響應
Headers
Status codes
Cookies

Servlet的生命週期

執行個體化
Web容器建立servlet執行個體
初始化
容器調用執行個體的init()方法
服務
如果容器有請求要傳送給servlet,就會調用執行個體中的service()方法,doGet()或 doPost()方法
消亡
執行個體消亡前,調用destroy()方法回收資源
不可獲得
執行個體被刪除,並且標記為可被進行記憶體回收

Servlet基本結構
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class SomeServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {       //使用“request”讀取和請求有關的資訊(比如Cookies)       //和表單資料      //使用“response”指定HTTP應答狀態碼和應答頭      //(比如指定內容類型,設定Cookie)      PrintWriter out = response.getWriter();      //使用“out”把應答內容發送到瀏覽器    }}
Java Servlet和JSP的比較

相似之處
均基於Java技術,都繼承了Java的所有特性,且都可以使用Java API
工作方式相似:JSP代碼先被JSP容器轉換為Servlet代碼再編譯為類
兩者在J2EE體繫結構中的工作層次相同,都負責與用戶端的串連
區別
編程方式不同:Servlets是一些運行於Web伺服器端的Java小程式;而JSP是指令碼,編寫起來更簡單容易
應用目的不同:Servlet主要用於從用戶端接收請求資訊,而JSP主要負責將伺服器端資訊傳送到用戶端
JSP真正意義:可將介面設計和商務邏輯設計分離

JavaBean概述

JavaBean是基於Java的組件模型,類似於Microsoft的COM組件
JavaBean通過Java虛擬機器執行
可以無限擴充Java程式的功能,通過組合快速產生新的應用程式
JavaBean傳統的應用在於可視化的領域,如AWT下的應用
自從JSP誕生後,JavaBean更多的應用在了非可視化領域,在伺服器端應用方面表現出來了越來越強的生命力
JavaBean區別於Java類的特點
有公用無參數的建構函式
每一個屬性都要有set,get方法
實現Serializable介面

屬性
在設計Bean時可以改變的外觀和行為特徵
開發工具通過對Bean進行內省來獲知其屬性,進而發布其屬性
方法
JavaBean中的方法就是通常的Java方法,它可以從其他組件或在指令碼環境中調用
預設情況下,所有bean的公有方法都可以被外部調用,但bean一般只會引出其公有方法的一個子集
事件
Bean與其他組件交流資訊的主要方式是發送和接收事件

JSP調用JavaBean的方法
    <jsp:useBean>:用於聲明和執行個體化javabean類.     <jsp:useBean         id="object-name"   scope="page | request | session | application" type="type-of-object"  class="fully-qualified-classname"  beanName="fully-qualified-beanName"/>     <jsp:setProperty>:用於設計javabean的值.     <jsp:setProperty   name="id-of-the-JavaBean"  property="name-of-property"    param="name-of-request-parameter-to-use"   value="new-value-of-this-property"/>      <jsp:getProperty>:用於擷取javabean中特定propoerty的值.     <jsp:getProperty        name="name-of-the-object"  property="name-of-property"/>  
JDBC概述

用於執行SQL語句的Java API
JDBC是一種低級API,是進階API的基礎
使用者只關注SQL語句本身
JDBC功能
與資料庫建立串連
發送SQL語句
處理結果
支援兩層模型(Applet)和三層模型
與ODBC區別
ODBC使用C語言介面,不適合在Java環境中使用
Java調用本地C代碼在安全性、實現、堅固性和程式的自動移植性方面都有許多缺點
JDBC建立在ODBC基礎之上,並保留了ODBC的基本設計特徵

JMS技術

為Message Service定義了通用 Java 語言介面,支援最常見的訊息傳遞模型
發布/訂閱模型
點到點模型
通過對JMS API的訪問可實現面向訊息的通訊
JMS通常用來實現異構系統之間的鬆散整合

訊息是非同步
允許不同的應用程式之間進行通訊
訊息應用程式之間是對等的
伺服器與客戶機之間沒有明顯的界限
訊息的生產者可以消費訊息,消費訊息的應用程式也可以生產訊息

JTA和JTS、JCA

JTA(Java Transaction API)是一種高層的,與實現無關的,與協議無關的API,應用程式和應用伺服器可以使用JTA來訪問事務
JTS(Java Transaction Service)規定了支援JTA的交易管理員的實現規範
在高層API之下實現了Object Transaction Service(OTS) 1.1規範的Java映射
JTS使用IIOP來傳播事務
JTA和JTS讓J2EE應用伺服器完成交易管理
開發人員只需在部署描述符中聲明交易管理屬性,便可以使得EJB組件參與到事務之中,由應用伺服器來負責事務的管理

Java Connector Architecture (JCA)
允許將支援訪問EIS的資來源配接器插入J2EE產品
定義了J2EE伺服器與資來源配接器之間的串連管理契約,允許建立到EIS的串連池
定義了交易管理員與EIS之間的交易管理契約,支援事務訪問
也支援完全由EIS管理的事務
定義了安全契約,使得能夠安全地訪問EIS

XML_RPC基本概念

是J2EE 1.4平台中Web服務的核心技術
類似於RMI的RPC機制,規定JAX-RPC運行環境
定義XML資料類型及WSDL(Web Services Description Language)
到Java類型的映射
定義JAX-RPC用戶端編程模型
Stub介面、動態代理、動態調用
定義基於Servlet的服務端網站模型
定義SOAP訊息Handler架構
提供複雜Java資料庫類型映射的擴充架構

JAXM

用於發送和接收基於SOAP的訊息
定義兩種發送和接收訊息的模型
要求-回應模型:是一種基於阻塞的點對點模型
單向模型:通過JAXM訊息提供者轉寄
JAXM的技術優點
發送面向文檔的資料
發送大量的、粗粒度的複雜的流資料
需要使用非同步資料交換模型
需要確保每個資料都被對方接收

JMX ( Java Management Extensions)

為應用程式、裝置、系統等植入管理功能的架構
裝配層:定義資訊模型,JMX中各種管理對象都以管理構件形式存在
代理層:定義各種服務以及通訊模型,MBean伺服器是核心,所有管理構件(包括協議適配器和連接器)都要向它註冊後才能被管理
分布式服務層:包括協議適配器和連接器兩種類型組件,定義能對代理層進行操作的管理介面和構件

J2EE核心技術構成

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.