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

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

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

    iNeo

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      30 Posts :: 8 Stories :: 2 Comments :: 0 Trackbacks

    #

    J2EE學(xué)習(xí)者越來越多,其本身技術(shù)也在不斷的發(fā)展,涌現(xiàn)出各種概念。作為Web服務(wù)的重要平臺(tái),本文將從一種容易理解的角度對這些概念向初學(xué)者進(jìn)行解釋,以便掌握學(xué)習(xí)J2EE學(xué)習(xí)方向。

      首先我們需要知道Java和J2EE是兩個(gè)不同概念,Java不只是指一種語言,已經(jīng)代表與微軟不同的另外一個(gè)巨大陣營,所以Java有時(shí)是指一種軟件系統(tǒng)的流派,當(dāng)然目前主要是.NET和Java兩大主流體系。

      J2EE可以說指Java在數(shù)據(jù)庫信息系統(tǒng)上實(shí)現(xiàn),數(shù)據(jù)庫信息系統(tǒng)從早期的dBase、到Delphi/VB等C/S結(jié)構(gòu),發(fā)展到B/S(Browser瀏覽器/Server服務(wù)器)結(jié)構(gòu),而J2EE主要是指B/S結(jié)構(gòu)的實(shí)現(xiàn)。

      J2EE又是一種框架和標(biāo)準(zhǔn),框架類似API、庫的概念,但是要超出它們。如果需要詳細(xì)了解框架,可先從設(shè)計(jì)模式開始學(xué)習(xí)。

      J2EE是一個(gè)虛的大的概念,J2EE標(biāo)準(zhǔn)主要有三種子技術(shù)標(biāo)準(zhǔn):WEB技術(shù)、EJB技術(shù)和JMS,談到J2EE應(yīng)該說最終要落實(shí)到這三個(gè)子概念上。

      這三種技術(shù)的每個(gè)技術(shù)在應(yīng)用時(shí)都涉及兩個(gè)部分:容器部分和應(yīng)用部分,Web容器也是指Jsp/Servlet容器,你如果要開發(fā)一個(gè)Web應(yīng)用,無論是編譯或運(yùn)行,都必須要有Jsp/Servlet庫或API支持(除了JDK/J2SE以外)。

      Web技術(shù)中除了Jsp/Servlet技術(shù)外,還需要JavaBeans或Java Class實(shí)現(xiàn)一些功能或者包裝攜帶數(shù)據(jù),所以Web技術(shù)最初裸體簡稱為Jsp/Servlet+JavaBeans系統(tǒng)。

      談到JavaBeans技術(shù),就涉及到組件構(gòu)件技術(shù)(component),這是Java的核心基礎(chǔ)部分,很多軟件設(shè)計(jì)概念(設(shè)計(jì)模式)都是通過JavaBeans實(shí)現(xiàn)的。

      JavaBeans不屬于J2EE概念范疇中,如果一個(gè)JavaBeans對象被Web技術(shù)(也就是Jsp/Servlet)調(diào)用,那么JavaBeans就運(yùn)行在J2EE的Web容器中;如果它被EJB調(diào)用,它就運(yùn)行在EJB容器中。

      EJB(企業(yè)JavaBeans)是普通JavaBeans的一種提升和規(guī)范,因?yàn)槠髽I(yè)信息系統(tǒng)開發(fā)中需要一個(gè)可伸縮的性能和事務(wù)、安全機(jī)制,這樣能保證企業(yè)系統(tǒng)平滑發(fā)展,而不是發(fā)展到一種規(guī)模重新更換一套軟件系統(tǒng)。

      至此,JavaBeans組件發(fā)展到EJB后,并不是說以前的那種JavaBeans形式就消失了,這就自然形成了兩種JavaBeans技術(shù):EJB和POJO,POJO完全不同于EJB概念,指的是普通JavaBeans,而且這個(gè)JavaBeans不依附某種框架,或者干脆可以說:這個(gè)JavaBeans是你為這個(gè)應(yīng)用程序單獨(dú)開發(fā)創(chuàng)建的。

      J2EE應(yīng)用系統(tǒng)開發(fā)工具有很多:如JBuilder、Eclipse等,這些IDE首先是Java開發(fā)工具,也就是說,它們首要基本功能是可以開發(fā)出JavaBeans或Java class,但是如果要開發(fā)出J2EE系統(tǒng),就要落實(shí)到要么是Web技術(shù)或EJB技術(shù),那么就有可能要一些專門模塊功能(如eclipse需要lomboz插件),最重要的是,因?yàn)镴2EE系統(tǒng)區(qū)分為容器和應(yīng)用兩個(gè)部分,所以,在任何開發(fā)工具中開發(fā)J2EE都需要指定J2EE容器。

      J2EE容器分為WEB容器和EJB容器,Tomcat/Resin是Web容器;JBoss是EJB容器+Web容器等,其中Web容器直接使用Tomcat實(shí)現(xiàn)的。所以你開發(fā)的Web應(yīng)用程序可以在上面兩種容器運(yùn)行,而你開發(fā)的Web+EJB應(yīng)用則只可以在JBoss服務(wù)器上運(yùn)行,商業(yè)產(chǎn)品Websphere/Weblogic等和JBoss屬于同一種性質(zhì)。

      J2EE容器也稱為J2EE服務(wù)器,大部分時(shí)它們概念是一致的。

      如果你的J2EE應(yīng)用系統(tǒng)的數(shù)據(jù)庫連接是通過JNDI獲得,也就是說是從容器中獲得,那么你的J2EE應(yīng)用系統(tǒng)基本與數(shù)據(jù)庫無關(guān),如果你在你的J2EE應(yīng)用系統(tǒng)耦合了數(shù)據(jù)庫JDBC驅(qū)動(dòng)的配置,那么你的J2EE應(yīng)用系統(tǒng)就有數(shù)據(jù)庫概念色彩,作為一個(gè)成熟需要推廣的J2EE應(yīng)用系統(tǒng),不推薦和具體數(shù)據(jù)庫耦合,當(dāng)然這其中如何保證J2EE應(yīng)用系統(tǒng)運(yùn)行性能又是體現(xiàn)你的設(shè)計(jì)水平了。

      衡量J2EE應(yīng)用系統(tǒng)設(shè)計(jì)開發(fā)水平高低的標(biāo)準(zhǔn)就是:解耦性;你的應(yīng)用系統(tǒng)各個(gè)功能是否能夠徹底脫離?是否不相互依賴,也只有這樣,才能體現(xiàn)可維護(hù)性、可拓展性的軟件設(shè)計(jì)目標(biāo)。

    共2頁。
    posted @ 2005-12-05 08:56 只牽這只狗 閱讀(271) | 評論 (0)編輯 收藏

             如果要問做什么事是最有吸引力,那就是創(chuàng)建Web應(yīng)用。畢竟,上次你聽到有人稱贊某產(chǎn)品的交互設(shè)計(jì)是什么時(shí)候的事了?(除了iPod之外) 它們都很cool, 而且都是很創(chuàng)新的項(xiàng)目。

    拋開這些不管,Web設(shè)計(jì)者們對設(shè)計(jì)交互式的Web沒有什么更好的辦法,卻對我們做桌面軟件的同事投去少許羨慕的目光.桌面應(yīng)用程序有豐富的界面以及對于Web程序來說無法比擬的響應(yīng)能力。同樣,Web的快速發(fā)展,在我們所提供的體驗(yàn)和用戶從桌面應(yīng)用程序所得到的體驗(yàn)間產(chǎn)生巨大的差距

    而如今差距正在消失。請看看“Google建議(Google Suggest)”. 觀察它按你的輸入顯示建議條目的更新速度,幾乎是立即更新的。再看看"Google Maps". 放大,用你的鼠標(biāo)搬動(dòng)和滾動(dòng)。這些動(dòng)作幾乎是立即響應(yīng)的,不用等待頁面刷新。

    "Google Suggest"和"Google Maps" 是采用Ajax技術(shù)的兩個(gè)典型例子。Ajax是Asynchronous JavaScript and XML的簡稱,它表現(xiàn)出一個(gè)Web開發(fā)上的根本轉(zhuǎn)變,那就是,Web上可能做些什么. Ajax的定義

    Ajax不是一個(gè)技術(shù),它實(shí)際上是幾種技術(shù),每種技術(shù)都有其獨(dú)特這處,合在一起就成了一個(gè)功能強(qiáng)大的新技術(shù)。Ajax包括:

    • XHTML和CSS
    • 使用文檔對象模型(Document Object Model)作動(dòng)態(tài)顯示和交互
    • 使用XML和XSLT做數(shù)據(jù)交互和操作
    • 使用XMLHttpRequest進(jìn)行異步數(shù)據(jù)接收
    • 使用JavaScript將它們綁定在一起

    傳統(tǒng)的web應(yīng)用模型工作起來就象這樣:大部分界面上的用戶動(dòng)作觸發(fā)一個(gè)連接到Web服務(wù)器的HTTP請求。服務(wù)器完成一些處理---接收數(shù)據(jù),處理計(jì)算,再訪問其它的數(shù)據(jù)庫系統(tǒng),最后返回一個(gè)HTML頁面到客戶端。這是一個(gè)老套的模式,自采用超文本作為web使用以來,一直都這樣用, 但看過《The Elements of User Experience》的讀者一定知道,是什么限制了Web界面沒有桌面軟件那么好用。

    圖1: 傳統(tǒng)Web應(yīng)用模型(左)與Ajax模型的比較(右).

    這種舊的途徑讓我們認(rèn)識(shí)到了許多技術(shù),但它不會(huì)產(chǎn)生很好的用戶體驗(yàn)。當(dāng)服務(wù)器正在處理自己的事情的時(shí)候,用戶在做什么?沒錯(cuò),等待。每一個(gè)動(dòng)作,用戶都要等待。

    很明顯,如果我們按桌面程序的思維設(shè)計(jì)Web應(yīng)用,我們不愿意讓用戶總是等待。當(dāng)界面加載后,為什么還要讓用戶每次再花一半的時(shí)間從服務(wù)取數(shù)據(jù)?實(shí)際上,為什么老是讓用戶看到程序去服務(wù)器取數(shù)據(jù)呢? Ajax如何不同凡響

    通過在用戶和服務(wù)器之間引入一個(gè)Ajax引擎,可以消除Web的開始-停止-開始-停止這樣的交互過程. 它就像增加了一層機(jī)制到程序中,使它響應(yīng)更靈敏,而它的確做到了這一點(diǎn)。

    不像加載一個(gè)頁面一樣,在會(huì)話的開始,瀏覽器加載了一個(gè)Ajax引擎---采用JavaScript編寫并且通常在一個(gè)隱藏frame中。這個(gè)引擎負(fù)責(zé)繪制用戶界面以及與服務(wù)器端通訊。Ajax引擎允許用異步的方式實(shí)現(xiàn)用戶與程序的交互--不用等待服務(wù)器的通訊。所以用戶再不不用打開一個(gè)空白窗口,看到等待光標(biāo)不斷的轉(zhuǎn),等待服務(wù)器完成后再響應(yīng)。

    圖 2: 傳統(tǒng)Web應(yīng)用的同步交互過程(上)和Ajax應(yīng)用的異步交互過程的比較(下).

    通常要產(chǎn)生一個(gè)HTTP請求的用戶動(dòng)作現(xiàn)在通過JavaScript調(diào)用Ajax引擎來代替. 任何用戶動(dòng)作的響應(yīng)不再要求直接傳到服務(wù)器---例如簡單的數(shù)據(jù)校驗(yàn),內(nèi)存中的數(shù)據(jù)編輯,甚至一些頁面導(dǎo)航---引擎自己就可以處理它. 如果引擎需要從服務(wù)器取數(shù)據(jù)來響應(yīng)用戶動(dòng)作---假設(shè)它提交需要處理的數(shù)據(jù),載入另外的界面代碼,或者接收新的數(shù)據(jù)---引擎讓這些工作異步進(jìn)行,通常使用XML, 不用再擔(dān)誤用戶界面的交互。 誰在使用Ajax

    在采用Ajax的開發(fā)上面,Google做了巨大的投資。去年Google所有主要的產(chǎn)品都用了這項(xiàng)技術(shù)---Orkut, Gmail, 以及最近的beta版的Google Groups, Google Suggest和Google Maps---它們?nèi)茿jax的應(yīng)用。(要想了解更多這些Ajax實(shí)際的技術(shù)細(xì)節(jié),請看它們的分析文章:Gmail, Google Suggest, Google Maps). 其它的像:Flickr, 采用許多人們喜歡的Ajax特性,還有Amazon的A9.com搜索引擎也采用類似的技術(shù)。

    這些項(xiàng)目證明了Ajax不只是學(xué)術(shù)上的,也有許多真實(shí)世界成功應(yīng)用。這不是什么實(shí)驗(yàn)室里的技術(shù)。Ajax的應(yīng)用可大可小,從非常簡單的,像單一功能的Google Suggest到非常復(fù)雜的Google Maps.

    Ajax:Web應(yīng)用開發(fā)新理念

    如果要用“充滿魅力”一詞來形容當(dāng)前流行的交互設(shè)計(jì),那么首推創(chuàng)建Web應(yīng)用程序。畢竟,當(dāng)你最終聽到某人傾倒于產(chǎn)品的交互設(shè)計(jì),難道不是在網(wǎng)上?(Okay,我承認(rèn)iPod除外)。所有追求酷,追求創(chuàng)新的新項(xiàng)目都是聯(lián)機(jī)應(yīng)用的。

    盡管如此,Web交互設(shè)計(jì)人員還是不可避免地對創(chuàng)建桌面應(yīng)用軟件的同事懷有一絲妒忌。桌面應(yīng)用程序所擁有的功能豐富性和響應(yīng)能力似乎是Web目前無法達(dá)到的。簡單地讓W(xué)eb應(yīng)用程序迅速蔓延,會(huì)在我們所提供的體驗(yàn)和用戶從桌面應(yīng)用程序獲取的體驗(yàn)之間形成一道鴻溝。

    但現(xiàn)在,這道鴻溝正被逐漸填平。讓我們看看Google Suggest。根據(jù)您輸入的內(nèi)容,相關(guān)的條目便幾乎立即更新。我們再看Google Maps。利用光標(biāo),在刻度線上移動(dòng)來放大地圖或者縮小,所有的一切幾乎都是即時(shí)的,完全不用等待頁面的刷新。

    Google Suggest和Google Maps就是這種新型Web應(yīng)用程序的兩個(gè)例子,我在Adaptive Path上把這種理念稱為 Ajax。也就是Asynchronous JavaScript + XML的簡寫,它預(yù)示著Web可能發(fā)生一次重大的變革。

    Ajax的定義

    Ajax并不是一種新技術(shù),它實(shí)際上是幾種已經(jīng)在各自領(lǐng)域大行其道的技術(shù)的強(qiáng)強(qiáng)結(jié)合。Ajax由以下內(nèi)容組成:

    · 基于標(biāo)準(zhǔn)化的XHTML和CSS;

    通過DOM(Document Object Model)實(shí)現(xiàn)動(dòng)態(tài)顯示和交互;
    · 通過XML和XSLT來進(jìn)行數(shù)據(jù)交換和處理;

    使用XMLHttpRequest通過異步方式獲取數(shù)據(jù);
    使用JavaScript來整合以上所有的技術(shù)
    經(jīng)典的Web應(yīng)用程序模型工作方式如下:大多數(shù)用戶動(dòng)作在界面上激發(fā)一個(gè)HTTP請求到web服務(wù)器。服務(wù)器做一些處理——獲取數(shù)據(jù),處理數(shù)字,與現(xiàn)有的應(yīng)用系統(tǒng)進(jìn)行溝通——最后返回HTML到客戶端。這樣的模型適合于以超文本為基礎(chǔ)的Web應(yīng)用程序,但作為一個(gè)強(qiáng)調(diào)用戶體驗(yàn)的狂熱分子(The Elements of User Experience一書的擁護(hù)者),我們認(rèn)為超文本造就Web成功的東西,卻并不一定滿足軟件應(yīng)用程序的要求。

    傳統(tǒng)的Web應(yīng)用程序模型技術(shù)上來說意義非凡,但它并不適用于創(chuàng)建完美的用戶體驗(yàn)。當(dāng)服務(wù)器在做數(shù)據(jù)處理的時(shí)候,用戶在干什么呢?沒錯(cuò),他們在等待。一個(gè)任務(wù)所需的步驟越多,用戶需要等待的次數(shù)也越多。

    顯然,當(dāng)我們設(shè)計(jì)Web應(yīng)用程序的時(shí)候,我們不應(yīng)該讓用戶傻等。界面一旦加載完成,為什么還要因?yàn)槌绦蛐枰獜姆?wù)器傳輸一些東西而中斷用戶交互呢?實(shí)際上,用戶為什么要看到程序與服務(wù)器的聯(lián)系?

    為什么Ajax與眾不同

    Ajax應(yīng)用程序摒棄了“開—關(guān)—開—關(guān)”的交互形式,在用戶與服務(wù)器之間引入了一個(gè)中間件——Ajax引擎。看上去在應(yīng)用程序上添加一個(gè)層面會(huì)減少響應(yīng),但事實(shí)上恰好相反。

    不同于加載一個(gè)網(wǎng)頁是,用戶會(huì)話一旦建立,瀏覽器就加載一個(gè)Ajax引擎——由JavaScript編寫并通常放置在一個(gè)隱藏幀內(nèi)。引擎的責(zé)任包括構(gòu)造用戶操作界面以及與服務(wù)器的溝通。Ajax引擎允許用戶與應(yīng)用程序的交互異步進(jìn)行——無須直接訪問服務(wù)器。所以用戶永遠(yuǎn)不會(huì)在服務(wù)器處理數(shù)據(jù)期間瞪眼面對一個(gè)白屏和沙漏圖標(biāo)。



    用戶動(dòng)作的處理由傳統(tǒng)的表單提交來激發(fā)一個(gè)HTTP請求,變?yōu)镴avascript調(diào)用Ajax引擎。給用戶的回應(yīng)不用等到服務(wù)器處理后返回——比如簡單的數(shù)據(jù)校驗(yàn),在內(nèi)存中編輯數(shù)據(jù),甚至一些導(dǎo)航功能——都直接由引擎來處理。如果引擎需要從服務(wù)器獲取些數(shù)據(jù)——提交數(shù)據(jù)給服務(wù)器處理,加載額外的界面代碼,或者獲取新數(shù)據(jù)——引擎通常以XML格式激發(fā)一個(gè)異步的請求,用戶端完全沒有被中斷的感覺。

    誰在使用Ajax

    Google在Ajax開發(fā)上投入了巨大的精力。去年Google推出的幾大產(chǎn)品——Orkut、Gmail、Google Groups最終測試版、Google Suggest和Google Maps——都是基于Ajax的應(yīng)用。其他還包括:有著很多備受人們贊譽(yù)特性的Flickr(http://www.flickr.com/)基于Ajax,Amazon的A9.com搜索引擎也使用了類似的技術(shù)。

    這些項(xiàng)目證實(shí)Ajax并不是一個(gè)技術(shù)性的實(shí)驗(yàn)品,它可以實(shí)踐在現(xiàn)實(shí)世界的應(yīng)用中。它也不是一種只能在實(shí)驗(yàn)室中運(yùn)用的技術(shù)。Ajax適用于從簡單的單函數(shù)Google Suggest到非常復(fù)雜的Google Maps等各種規(guī)模的應(yīng)用程序。

    在Adaptive Path,我們已經(jīng)基于Ajax的理念工作了好幾個(gè)月,我們意識(shí)到我們也僅僅是接觸到Ajax所能帶來的非凡體驗(yàn)的一點(diǎn)皮毛。Ajax是Web應(yīng)用程序的一個(gè)重要發(fā)展,并且其重要性還在逐步增長。因?yàn)樵S多開發(fā)人員已經(jīng)熟悉Ajax所包含的技術(shù),我們期望看到更多的組織能夠像Google那樣通過Ajax獲得更大的競爭優(yōu)勢。

    更進(jìn)一步

    創(chuàng)建Ajax應(yīng)用程序所面臨的最大挑戰(zhàn)并不在技術(shù)上。Ajax的核心技術(shù)是成熟的,穩(wěn)定并被廣泛應(yīng)用著。這些挑戰(zhàn)在于:應(yīng)用設(shè)計(jì)人員忘掉所有我們所熟知的網(wǎng)絡(luò)限制,去想像更寬廣、更深遠(yuǎn)的可能情況。

    接下來會(huì)很有趣。

    Ajax Q&A

    2005年3月13日:自從Jesse發(fā)表了該文,他收到了不計(jì)其數(shù)的咨詢Ajax問題的信件,Jesse回復(fù)了其中有代表性的問題并整理成Q&A。

    Q:是Adaptive Path還是Google發(fā)明了Ajax?Adaptive Path是否協(xié)助開發(fā)了Google的Ajax應(yīng)用程序?
    A:Ajax并不是由Adaptive Path或者Google發(fā)明的。Google最新的產(chǎn)品是Ajax應(yīng)用程序最具代表性的例子。Adaptive Path沒有參與Google的開發(fā),但我們在為其他的一些客戶做一些與Ajax相關(guān)的工作。

    Q:Adaptive Path會(huì)出售Ajax組件或者注冊Ajax這個(gè)商標(biāo)嗎?我從哪里可以下載到它?
    A:Ajax并不是一個(gè)具體的軟件或程序,它是一種理念——關(guān)于用合理的技術(shù)構(gòu)建Web應(yīng)用程序架構(gòu)的思考。Ajax這個(gè)名稱和它的理念都不是Adaptive Path私有的。

    Q:Ajax只不過是XMLHttpRequest的別名嗎?
    A:不是。XMLHttpRequest只是Ajax的一個(gè)組成部分。XMLHttpRequest讓客戶端與服務(wù)器的異步通訊成為可能;Ajax是本文描述的一個(gè)整體理念,它不僅依賴于XMLHttpRequest,還包括CSS、DOM和其他技術(shù)等等。

    Q:為什么你會(huì)起這么個(gè)名字?
    A:我們需要一個(gè)簡短的表示“Asynchronous JavaScript+CSS+DOM+XMLHttpRequest”的新詞來與客戶談我們的理念。

    Q:與服務(wù)器異步通訊的技術(shù)產(chǎn)生很多年了,Ajax何以稱為新理念?
    A:Ajax包含的技術(shù)被大量應(yīng)用在現(xiàn)實(shí)世界中以至于改變了Web的基礎(chǔ)交互模式是一個(gè)新現(xiàn)象。Ajax是針對現(xiàn)在而言,因?yàn)檫@些技術(shù)離工業(yè)化應(yīng)用還需要很多時(shí)間去開發(fā)。

    Q:Ajax是一個(gè)技術(shù)平臺(tái)或者架構(gòu)嗎?
    A:都是。Ajax是一系列技術(shù)的無縫集合。

    Q:Ajax最適合于什么樣的應(yīng)用?
    A:我也不知道。因?yàn)檫@是一個(gè)相當(dāng)新的理念,就我們的理解而言,Ajax應(yīng)用還處于初期階段。有時(shí)候傳統(tǒng)的Web應(yīng)用程序模型可能更為適合。

    Q:是否可以理解為Adaptive Path就是取代anti-Flash?
    A:完全不是。Macromedia是Adaptive Path的客戶之一,并且我們長期為Flash技術(shù)做技術(shù)支持。待Ajax成熟后,我認(rèn)為對于具體的問題,Ajax有時(shí)候會(huì)是一個(gè)更好的解決方案,同樣有時(shí)候Flash也許做得更好。我們也有興趣探討兩者的結(jié)合。(比如Flickr,它結(jié)合了兩者)。

    Q:Ajax在易用性和瀏覽器兼容性上是否有限制?Ajax是否會(huì)與后退按鈕沖突?Ajax與REST(雷達(dá)電子掃描技術(shù))兼容嗎?Ajax的開發(fā)有哪些安全考慮?Ajax能為那些禁止Javascript運(yùn)行的用戶工作嗎?
    A:所有這些問題的答案,我只能說“可能”。已經(jīng)有很多的開發(fā)者著手這些方面的工作。要評估Ajax的所有限制,我想還需要做很多工作,我們希望Ajax開發(fā)社區(qū)能揭示更多的信息。

    Q:你所提到的Google的一些應(yīng)用中實(shí)際上并沒有使用XML。我一定要在Ajax應(yīng)用中使用XML或XSLT嗎?
    A:不是,對于Ajax客戶端,XML作為數(shù)據(jù)交換的載體是支持最為完善的(XMLHttpRequest,DOM支持)。當(dāng)然,你沒有理由不接受可以達(dá)到同樣效果的技術(shù),例如JavaScript Object Notation(http://www.crockford.com/JSON/)或者其他類似的數(shù)據(jù)交換的格式。

    Q:Ajax應(yīng)用比傳統(tǒng)的Web應(yīng)用程序方便開發(fā)嗎?
    A:也不盡然。Ajax的應(yīng)用不可避免要在客戶端運(yùn)行復(fù)雜的JavaScript腳本。編寫復(fù)雜并且高效穩(wěn)定的腳本并不是一件容易的事情,優(yōu)秀的開發(fā)工具和框架能幫助我們接受這一挑戰(zhàn)。

    Q:Ajax應(yīng)用程序總比傳統(tǒng)的Web應(yīng)用程序程序更友好嗎?
    A:不一定,Ajax給交互設(shè)計(jì)人員更多的靈活性。能力越大,責(zé)任也越大。我們必須小心使用Ajax去改善用戶體驗(yàn),而不是把它弄得更糟。



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=542160

    posted @ 2005-12-05 08:29 只牽這只狗 閱讀(282) | 評論 (0)編輯 收藏

    <%
    out.println("Protocol: " + request.getProtocol() + " ");
    out.println("Scheme: " + request.getScheme() + " ");
    out.println("Server Name: " + request.getServerName() + " " );
    out.println("Server Port: " + request.getServerPort() + " ");
    out.println("Protocol: " + request.getProtocol() + " ");
    out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo() + " ");
    out.println("Remote Addr: " + request.getRemoteAddr() + " ");
    out.println("Remote Host: " + request.getRemoteHost() + " ");
    out.println("Character Encoding: " + request.getCharacterEncoding() + " ");
    out.println("Content Length: " + request.getContentLength() + " ");
    out.println("Content Type: "+ request.getContentType() + " ");
    out.println("Auth Type: " + request.getAuthType() + " ");
    out.println("HTTP Method: " + request.getMethod() + " ");
    out.println("Path Info: " + request.getPathInfo() + " ");
    out.println("Path Trans: " + request.getPathTranslated() + " ");
    out.println("Query String: " + request.getQueryString() + " ");
    out.println("Remote User: " + request.getRemoteUser() + " ");
    out.println("Session Id: " + request.getRequestedSessionId() + " ");
    out.println("Request URI: " + request.getRequestURI() + " ");
    out.println("Servlet Path: " + request.getServletPath() + " ");
    out.println("Accept: " + request.getHeader("Accept") + " ");
    out.println("Host: " + request.getHeader("Host") + " ");
    out.println("Referer : " + request.getHeader("Referer") + " ");
    out.println("Accept-Language : " + request.getHeader("Accept-Language") + " ");
    out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding") + " ");
    out.println("User-Agent : " + request.getHeader("User-Agent") + " ");
    out.println("Connection : " + request.getHeader("Connection") + " ");
    out.println("Cookie : " + request.getHeader("Cookie") + " ");
    out.println("Created : " + session.getCreationTime() + " ");
    out.println("LastAccessed : " + session.getLastAccessedTime() + " ");

    %>

    運(yùn)行結(jié)果:

    Protocol: HTTP/1.1
    Scheme: http
    Server Name: 192.168.0.1
    Server Port: 8080
    Protocol: HTTP/1.1
    Server Info: JavaServer Web Dev Kit/1.0 EA (JSP 1.0; Servlet 2.1; Java 1.2; Windows NT 5.0 x86; java.vendor=Sun Microsystems Inc.)
    Remote Addr: 192.168.0.106
    Remote Host: abc
    Character Encoding: null
    Content Length: -1
    Content Type: null
    Auth Type: null
    HTTP Method: GET
    Path Info: null
    Path Trans: null
    Query String: null
    Remote User: null
    Session Id: To1010mC466113890241879At
    Request URI: /c.jsp
    Servlet Path: /c.jsp
    Accept: */*
    Host: 192.168.0.1:8080
    Referer : null
    Accept-Language : zh-cn
    Accept-Encoding : gzip, deflate
    User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
    Connection : Keep-Alive
    Cookie : SESSIONID=To1010mC466113890241879At
    Created : 965764522168
    LastAccessed : 965775587088。

    posted @ 2005-12-01 13:55 只牽這只狗 閱讀(975) | 評論 (1)編輯 收藏

    Tomcat5的web應(yīng)用啟動(dòng)順序詳解

    cleverpig 發(fā)表于2005-11-29 作者:cleverpig 來自:Matrix 評價(jià):3/1 評論數(shù):0 點(diǎn)擊數(shù):211 [收藏]
    摘要:
    應(yīng)用Tomcat對于我們來講實(shí)在是司空見慣了,但是對于每個(gè)使用者來講,應(yīng)該了解其運(yùn)轉(zhuǎn)的機(jī)制也是必不可少的,本人在維護(hù)"apache開源項(xiàng)目"論壇時(shí)遇到此問題,并略作研究,望與大家共討、分享。


    本文Matrix永久鏡像:http://www.matrix.org.cn/resource/article/44/44001_Tomcat5_web_start.html
    說明:本文可能由Matrix原創(chuàng),也可能由Matrix的會(huì)員整理,或者由
    Matrix的Crawler在全球知名Java或者其他技術(shù)相關(guān)站點(diǎn)抓取并永久
    保留鏡像,Matrix會(huì)保留所有原來的出處URL,并在顯著地方作出說明,
    如果你發(fā)覺出處URL有誤,請聯(lián)系Matrix改正.
    Tomcat5的web應(yīng)用啟動(dòng)順序詳解

    作者:cleverpig


    版權(quán)聲明:本文可以自由轉(zhuǎn)載,轉(zhuǎn)載時(shí)請務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
    作者:cleverpig(http://blog.matrix.org.cn/page/cleverpig)
    原文:[http://www.matrix.org.cn/resource/article/43/43987_JGroups.html]http://www.matrix.org.cn/resource/article/43/43987_JGroups.html[/url]
    關(guān)鍵字:tomcat,web,啟動(dòng)順序

    摘要:

       應(yīng)用Tomcat對于我們來講實(shí)在是司空見慣了,但是對于每個(gè)使用者來講,應(yīng)該了解其運(yùn)轉(zhuǎn)的機(jī)制也是必不可少的,本人在維護(hù)"apache開源項(xiàng)目"論壇時(shí)遇到此問題,并略作研究,望與大家共討、分享。

    一、配置自動(dòng)部署時(shí)的web應(yīng)用加載順序:

       當(dāng)tomcat的server.xml中對虛擬主機(jī)(Host)配置中autoDeploy=true和unpackWARs=true時(shí),如:
    server.xml

    ...
    <Host name="localhost" debug="0" appBase="webapps"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
    ...


       下面的部署順序在Tomcat啟動(dòng)時(shí)發(fā)生:

       1。任何具有上下文描述符(Context Descriptors)的web應(yīng)用首先被部署,tomcat在$CATALINA_HOME/conf/[enginename]/[hostname]/目錄中羅列出所有的以xml為結(jié)尾的文件,將其作為web應(yīng)用的上下文描述符,并按照文件名排序逐一部署。

       注意作為上下文描述符的文件名可以不為web應(yīng)用名,因?yàn)閠omcat會(huì)讀取其中的內(nèi)容來判斷,但是改變上下文描述符的文件名會(huì)使部署的順序發(fā)生變化。

    如:
    $CATALINA_HOME\conf\Catalina\localhost\devoffer.xml


    <?xml version='1.0' encoding='utf-8'?>
    <Context docBase="E:/eclipse3.1RC3/workspace/devOfferProject/web" path="/devoffer" useNaming="false" workDir="work\Catalina\localhost\devoffer">
    </Context>


    上面的上下文描述符說明了devoff這個(gè)web應(yīng)用的docBase和部署的path以及其工作目錄。

       2。另外,位于$CATALINA_HOME/webapps/[webappname]/META-INF/目錄中的context.xml也作為上下文描述符使用,在處理了上文所說的位于$CATALINA_HOME/conf/[enginename]/[hostname]/目錄中的上下文描述符后,tomcat將部署這些在web應(yīng)用的META-INF目錄中的context.xml。加載順序按照應(yīng)用名的字母順序。

       3。沒有上下文描述符的已經(jīng)被展開的web應(yīng)用將按照其應(yīng)用名順序逐個(gè)被部署,如果其中的一個(gè)web應(yīng)用關(guān)聯(lián)著一個(gè)在appBase(一般為"$CATALINA_HOME/webapps"目錄)中的WAR文件,則當(dāng)WAR文件比相對應(yīng)的被展開的web應(yīng)用新時(shí),那個(gè)被展開的web應(yīng)用將被刪除,tomcat將WAR文件展開并部署作為替換舊的web應(yīng)用。

       4。在執(zhí)行了1-3步后,tomcat將部署在appBase中的WAR文件。

       請注意:在每個(gè)應(yīng)用被部署后,tomcat為沒有上下文描述符的web應(yīng)用建立上下文描述符。


    二、非自動(dòng)部署配置下的應(yīng)用加載順序:

       此時(shí)完全按照在tomcat manager中人工部署順序。

    三、參考資源:
           http://tomcat.apache.org/tomcat-5.5-doc/deployer-howto.html

    四、參加討論:
    http://www.matrix.org.cn/thread.shtml?topicId=32324&forumId=17
    posted @ 2005-11-30 16:28 只牽這只狗 閱讀(293) | 評論 (0)編輯 收藏

    你能過關(guān)嗎?J2EE面試題集錦(附答案)
    出處:CSDN[ 2005-11-24 10:00:55 ] 作者:metaphy 責(zé)任編輯:xietaoming

    /**
     * By metaphy 2005-11-12
     * Version: 0.01
     * 注:題目答案來源于metaphy過去的知識(shí)或網(wǎng)絡(luò),metaphy不能保證其正確或完整性,僅供參考
    **/

    一、基礎(chǔ)問答

      1.下面哪些類可以被繼承?

       java.lang.Thread (T)
       java.lang.Number (T)
       java.lang.Double (F)
       java.lang.Math  (F)
       java.lang.Void  (F)
       java.lang.Class  (F)
       java.lang.ClassLoader (T)

      2.抽象類和接口的區(qū)別

      (1)接口可以被多重implements,抽象類只能被單一extends
      (2)接口只有定義,抽象類可以有定義和實(shí)現(xiàn)
      (3)接口的字段定義默認(rèn)為:public static final, 抽象類字段默認(rèn)是"friendly"(本包可見)

      3.Hashtable的原理,并說出HashMap與Hashtable的區(qū)別

      HashTable的原理:通過節(jié)點(diǎn)的關(guān)鍵碼確定節(jié)點(diǎn)的存儲(chǔ)位置,即給定節(jié)點(diǎn)的關(guān)鍵碼k,通過一定的函數(shù)關(guān)系H(散列函數(shù)),得到函數(shù)值H(k),將此值解釋為該節(jié)點(diǎn)的存儲(chǔ)地址.
    HashMap 與Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null為關(guān)鍵碼的.

      4.forward和redirect的區(qū)別

      forward: an internal transfer in servlet
      redirect: 重定向,有2次request,第2次request將丟失第一次的attributs/parameters等

      5.什么是Web容器?

      實(shí)現(xiàn)J2EE規(guī)范中web協(xié)議的應(yīng)用.該協(xié)議定義了web程序的運(yùn)行時(shí)環(huán)境,包括:并發(fā)性,安全性,生命周期管理等等.

      6.解釋下面關(guān)于J2EE的名詞

      (1)JNDI:Java Naming & Directory Interface,JAVA命名目錄服務(wù).主要提供的功能是:提供一個(gè)目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能.
      (2)JMS:Java Message Service,JAVA消息服務(wù).主要實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的通訊.包括點(diǎn)對點(diǎn)和廣播.
      (3)JTA:Java Transaction API,JAVA事務(wù)服務(wù).提供各種分布式事務(wù)服務(wù).應(yīng)用程序只需調(diào)用其提供的接口即可.
      (4)JAF: Java Action FrameWork,JAVA安全認(rèn)證框架.提供一些安全控制方面的框架.讓開發(fā)者通過各種部署和自定義實(shí)現(xiàn)自己的個(gè)性安全控制策略.
      (5)RMI:Remote Method Interface,遠(yuǎn)程方法調(diào)用

      7.EJB是基于哪些技術(shù)實(shí)現(xiàn)的?并說 出SessionBean和EntityBean的區(qū)別,StatefulBean和StatelessBean的區(qū)別.

      EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術(shù)實(shí)現(xiàn).

      SessionBean在J2EE應(yīng)用程序中被用來完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪問數(shù)據(jù)庫、調(diào)用其他EJB組件.EntityBean被用來代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù).對于客戶機(jī),SessionBean是一種非持久性對象,它實(shí)現(xiàn)某些在服務(wù)器上運(yùn)行的業(yè)務(wù)邏輯;EntityBean是一種持久性對象,它代表一個(gè)存儲(chǔ)在持久性存儲(chǔ)器中的實(shí)體的對象視圖,或是一個(gè)由現(xiàn)有企業(yè)應(yīng)用程序?qū)崿F(xiàn)的實(shí)體.

      Session Bean 還可以再細(xì)分為 Stateful Session Bean 與 Stateless Session Bean .這兩種的 Session Bean都可以將系統(tǒng)邏輯放在 method之中執(zhí)行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態(tài),因此通常來說,一個(gè)使用者會(huì)有一個(gè)相對應(yīng)的 Stateful Session Bean 的實(shí)體.Stateless Session Bean 雖然也是邏輯組件,但是他卻不負(fù)責(zé)記錄使用者狀態(tài),也就是說當(dāng)使用者呼叫 Stateless Session Bean 的時(shí)候,EJB Container 并不會(huì)找尋特定的 Stateless Session Bean 的實(shí)體來執(zhí)行這個(gè) method.換言之,很可能數(shù)個(gè)使用者在執(zhí)行某個(gè) Stateless Session Bean 的 methods 時(shí),會(huì)是同一個(gè) Bean 的 Instance 在執(zhí)行.從內(nèi)存方面來看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會(huì)消耗 J2EE Server 較多的內(nèi)存,然而 Stateful Session Bean 的優(yōu)勢卻在于他可以維持使用者的狀態(tài).

      8.XML的解析方法

      Sax,DOM,JDOM

      9.什么是Web Service?

      Web Service就是為了使原來各孤立的站點(diǎn)之間的信息能夠相互通信、共享而提出的一種接口。
    Web Service所使用的是Internet上統(tǒng)一、開放的標(biāo)準(zhǔn),如HTTP、XML、SOAP(簡單對象訪問協(xié)議)、WSDL等,所以Web Service可以在任何支持這些標(biāo)準(zhǔn)的環(huán)境(Windows,Linux)中使用。

      注:SOAP協(xié)議(Simple Object Access Protocal,簡單對象訪問協(xié)議),它是一個(gè)用于分散和分布式環(huán)境下網(wǎng)絡(luò)信息交換的基于XML的通訊協(xié)議。在此協(xié)議下,軟件組件或應(yīng)用程序能夠通過標(biāo)準(zhǔn)的HTTP協(xié)議進(jìn)行通訊。它的設(shè)計(jì)目標(biāo)就是簡單性和擴(kuò)展性,這有助于大量異構(gòu)程序和平臺(tái)之間的互操作性,從而使存在的應(yīng)用程序能夠被廣泛的用戶訪問。

      優(yōu)勢:

      (1).跨平臺(tái)。
      (2).SOAP協(xié)議是基于XML和HTTP這些業(yè)界的標(biāo)準(zhǔn)的,得到了所有的重要公司的支持。
      (3).由于使用了SOAP,數(shù)據(jù)是以ASCII文本的方式而非二進(jìn)制傳輸,調(diào)試很方便;并且由于這樣,它的數(shù)據(jù)容易通過防火墻,不需要防火墻為了程序而單獨(dú)開一個(gè)“漏洞”。
      (4).此外,WebService實(shí)現(xiàn)的技術(shù)難度要比CORBA和DCOM小得多。
      (5).要實(shí)現(xiàn)B2B集成,EDI比較完善與比較復(fù)雜;而用WebService則可以低成本的實(shí)現(xiàn),小公司也可以用上。
      (6).在C/S的程序中,WebService可以實(shí)現(xiàn)網(wǎng)頁無整體刷新的與服務(wù)器打交道并取數(shù)。

      缺點(diǎn):

      (1).WebService使用了XML對數(shù)據(jù)封裝,會(huì)造成大量的數(shù)據(jù)要在網(wǎng)絡(luò)中傳輸。
      (2).WebService規(guī)范沒有規(guī)定任何與實(shí)現(xiàn)相關(guān)的細(xì)節(jié),包括對象模型、編程語言,這一點(diǎn),它不如CORBA。

      10.多線程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?

      答:多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口
      同步的實(shí)現(xiàn)方面有兩種,分別是synchronized,wait與notify

      11.JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?

      動(dòng)態(tài)INCLUDE用jsp:include動(dòng)作實(shí)現(xiàn)

    <jsp:include page="included.jsp" flush="true"/>

      它總是會(huì)檢查所含文件中的變化,適合用于包含動(dòng)態(tài)頁面,并且可以帶參數(shù)

      靜態(tài)INCLUDE用include偽碼實(shí)現(xiàn),定不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁面

      <%@ include file="included.htm" %>

    二、Java編程與程序運(yùn)行結(jié)果

      1.Java編程,打印昨天的當(dāng)前時(shí)刻

    public class YesterdayCurrent{
      public void main(String[] args){
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);
        System.out.println(cal.getTime());
      }
    }

      2.文件讀寫,實(shí)現(xiàn)一個(gè)計(jì)數(shù)器

      public int getNum(){
            int i = -1;
            try{
                String stri="";
                BufferedReader in = new BufferedReader(new FileReader(f));
                while((stri=in.readLine())!=null){
                    i = Integer.parseInt(stri.trim());
                }
                in.close();
            }catch(Exception e){
                e.printStackTrace();
            }
            return i;
        }
        public void setNum(){
            int i = getNum();
            i++;       
            try{
                PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false))); 
                out.write(String.valueOf(i));            //可能是編碼的原因,如果直接寫入int的話,將出現(xiàn)java編碼和windows編碼的混亂,因此此處寫入的是String
                out.close() ;
            }catch(Exception e){
                e.printStackTrace();
            }
        }

      3. 指出下面程序的運(yùn)行結(jié)果:

    class A{
        static{
            System.out.print("1");
        }
        public A(){
            System.out.print("2");
        }
    }
    class B extends A{
        static{
            System.out.print("a");
        }
        public B(){
            System.out.print("b");
        }  
    }
    public class Hello{
        public static void main(String[] ars){
            A ab = new B(); //執(zhí)行到此處,結(jié)果: 1a2b
     ab = new B(); //執(zhí)行到此處,結(jié)果: 1a2bab
        }
    }

      注:類的static 代碼段,可以看作是類首次加載(被虛擬機(jī)加載)執(zhí)行的代碼,而對于類的加載,首先要執(zhí)行其基類的構(gòu)造,再執(zhí)行其本身的構(gòu)造

      4.寫一個(gè)Singleton模式的例子

    public class Singleton{
     private static Singleton single = new Singleton();
     private Singleton(){}
     public Singleton getInstance(){
      return single;
     }
    }

    三、數(shù)據(jù)庫

      1.刪除表的重復(fù)記錄

      如果記錄完全相同才算重復(fù)記錄,那么:  (sql server2000下測試通過)

    select distinct * into #tmpp from tid
    delete from tid    
    insert into tid select * from #tmpp
    drop table #tmpp

      如果有id主鍵(數(shù)字,自增1的那種),那么:(sql server2000下測試通過)

    delete from tableA where id not in
    (select id = min(id) from tableA group by name)

      2.delete from tablea & truncate table tablea的區(qū)別

      truncate 語句執(zhí)行速度快,占資源少,并且只記錄頁刪除的日志;
      delete 對每條記錄的刪除均需要記錄日志

    posted @ 2005-11-29 12:33 只牽這只狗 閱讀(243) | 評論 (0)編輯 收藏

    Eclipse 運(yùn)行命令行參數(shù)大全  
      包括英文版本和中文版本兩種的說明, 特別需要值得一提的是那個(gè) -nl 參數(shù), 可以指定程序啟動(dòng)時(shí)所使用的語言. 例如:
    eclipse -nl en_US
    將啟動(dòng)英文語言, 這個(gè)特性在安裝了國際化語言包以后特別有用, 可以方便的切換各個(gè)語言的版本. 注意 IBM WSAD v5.1 也支持這個(gè)功能.

    運(yùn)行 Eclipse
    將 Eclipse 驅(qū)動(dòng)程序安裝(解壓縮)到某個(gè)目錄(例如,c:\eclipse)中之后,通過運(yùn)行頂級安裝目錄中的 Eclipse 可執(zhí)行文件來啟動(dòng)"工作臺(tái)"。在 Windows 系統(tǒng)上,該可執(zhí)行文件稱為 eclipse.exe,而在 Linux 系統(tǒng)上稱為 eclipse。注意:下列討論描述 Windows 系統(tǒng)上的設(shè)置。Linux 上的設(shè)置是相似的。

    如果您沒有另行指定,則平臺(tái)將缺省工作區(qū)目錄創(chuàng)建為可執(zhí)行文件的兄弟目錄(例如 c:\eclipse\workspace)。此工作區(qū)目錄用作項(xiàng)目的缺省內(nèi)容區(qū),還用于保存任何必需的元數(shù)據(jù)。要進(jìn)行共享安裝或多工作區(qū)安裝,應(yīng)明確指出工作區(qū)的位置而不是使用缺省值。有兩種控制工作區(qū)位置的方法:使用當(dāng)前工作目錄或使用 -data 命令行自變量。

    將工作區(qū)位置設(shè)置為在當(dāng)前工作目錄內(nèi)
    在此方案中,工作區(qū)位置將是當(dāng)前工作目錄中稱為 workspace 的目錄。

    實(shí)現(xiàn)此目的最容易的方法可能是使用下列步驟來創(chuàng)建快捷方式:

    導(dǎo)航到 Windows 資源管理器中的 eclipse.exe 并使用右鍵拖動(dòng)來創(chuàng)建 eclipse.exe 的快捷方式。
    編輯快捷方式的屬性,以使啟動(dòng)位置:字段標(biāo)識(shí)工作區(qū)位置的父目錄(例如,c:\users\robert)。
    關(guān)閉屬性對話框并雙擊快捷方式(如果提供的目錄為 c:\users\robert,則工作區(qū)位置將為 c:\users\robert\workspace)。
    當(dāng)然,您也可以使用命令提示符(通過將目錄切換為工作區(qū)父目錄然后運(yùn)行 eclipse.exe)來獲得同樣的效果。

    使用 -data 設(shè)置工作區(qū)的特定位置
    要使用 -data 命令行自變量,只要將 -data your_workspace_location(例如,-data c:\users\robert\myworkspace)添加至快捷方式屬性中的目標(biāo)字段或顯式地將它包括在命令行上。

    使用 -vm 設(shè)置 java VM
    建議顯式指定在運(yùn)行 Eclipse 時(shí)要使用哪個(gè) Java VM。使用 -vm 命令行自變量(例如,-vm c:\jre\bin\javaw.exe)可以實(shí)現(xiàn)此目的。如果不使用 -vm,則 Eclipse 將使用在 O/S 路徑上找到的一個(gè) Java VM。當(dāng)安裝其它產(chǎn)品時(shí),它們可更改您的路徑,導(dǎo)致在下一次啟動(dòng) Eclipse 時(shí)使用另一 Java VM。

    運(yùn)行 Eclipse 中的高級主題
    Eclipse 可執(zhí)行文件及平臺(tái)本身提供了人們感興趣的開發(fā)或調(diào)試 Eclipse 各部件的許多執(zhí)行選項(xiàng)。運(yùn)行 Eclipse 可執(zhí)行文件的一般格式是:

    eclipse [platform options] [-vmargs [Java VM arguments]]
    Eclipse 啟動(dòng)參數(shù)  命令 描述  原因
    -arch architecture
    定義 Eclipse 平臺(tái)在其上運(yùn)行的處理器體系結(jié)構(gòu)。Eclipse 平臺(tái)通常使用 Java os.arch 屬性的常用值來計(jì)算最佳設(shè)置。如果在此處指定該項(xiàng),則這是 Eclipse 平臺(tái)使用的值。此處指定的值可作為 BootLoader.getOSArch() 用于插件。示例值有:"x86"、"sparc"、"PA-RISC"和"ppc"。 2.0
    -application applicationId
    要運(yùn)行的應(yīng)用程序。應(yīng)用程序由向 org.eclipse.core.runtime.applications 擴(kuò)展點(diǎn)提供擴(kuò)展的插件來聲明。通常不需要此自變量。如果指定了此項(xiàng),則該值會(huì)覆蓋配置提供的值。如果不指定此項(xiàng),則會(huì)運(yùn)行"Eclipse 工作臺(tái)"。 1.0
    -boot bootJarURL
    (建議不使用;用 -configuration 代替;支持 1.0 兼容)。Eclipse 平臺(tái)的引導(dǎo)插件代碼(boot.jar)的位置,表示為 URL。如果指定此項(xiàng),則會(huì)用它來為裝入 Eclipse 平臺(tái)引導(dǎo)程序類裝入器的類裝入器設(shè)置類路徑。僅當(dāng)更改 startup.jar 和 boot.jar 的相對位置時(shí)才需要它。注意,不允許使用相對 URL。  *1.0
    -classloaderproperties [file]
    如果指定的話,則使用給定位置處的類裝入器屬性文件來激活平臺(tái)類類裝入器增強(qiáng)。文件自變量可以是文件路徑或 URL。注意,不允許使用相對 URL。單擊此處以獲得更多詳細(xì)信息。 2.0.2
    -configuration configurationFileURL
    Eclipse 平臺(tái)配置文件的位置,表示為 URL。配置文件確定 Eclipse 平臺(tái)、可用插件集和主要功能部件的位置。注意,不允許使用相對 URL。當(dāng)安裝或更新 Eclipse 平臺(tái)時(shí)配置文件被寫至此位置。  2.0
    -consolelog
    將 Eclipse 平臺(tái)的錯(cuò)誤日志鏡像到用來運(yùn)行 Eclipse 的控制臺(tái)。與 -debug 組合時(shí)很方便使用。 1.0
    -data workspacePath
    要運(yùn)行 Eclipse 平臺(tái)的工作區(qū)的路徑。工作區(qū)位置也是項(xiàng)目的缺省位置。相對于從中啟動(dòng) eclipse 的目錄來解釋相對路徑。 1.0
    -debug [optionsFile]
    將平臺(tái)置于調(diào)試方式,并從給定位置處的文件裝入調(diào)試選項(xiàng)(如果指定的話)。此文件指示哪些調(diào)試點(diǎn)可用于插件以及是否已啟用它們。如果未給出文件位置,則平臺(tái)在啟動(dòng) eclipse 的目錄中查找稱為".options"的文件。URL 和文件系統(tǒng)路徑都可作為文件位置。 1.0
    -dev [classpathEntries]
    將平臺(tái)置于開發(fā)方式。將可選類路徑條目(用逗號(hào)分隔的列表)添加至每個(gè)插件的運(yùn)行時(shí)類路徑。例如,當(dāng)工作區(qū)包含要開發(fā)的插件時(shí),指定 -dev bin 會(huì)為每個(gè)插件項(xiàng)目的名為 bin 的目錄添加類路徑條目,允許在其中存儲(chǔ)最新生成的類文件。除去了冗余或不存在的類路徑條目。 1.0
    -endsplash params
    用于在 Eclipse 平臺(tái)啟動(dòng)并運(yùn)行時(shí)關(guān)閉閃屏的內(nèi)部選項(xiàng)。此選項(xiàng)在閃屏處理鏈中不同的位置有不同的語法和語義。 2.0
    -feature featureId
    主要功能部件的標(biāo)識(shí)。主要功能部件為 Eclipse 的已啟動(dòng)實(shí)例提供了產(chǎn)品個(gè)性,并確定使用的產(chǎn)品定制信息。 2.0
    -keyring keyringFilePath
    磁盤上授權(quán)數(shù)據(jù)庫(或"密鑰環(huán)"文件)的位置。此自變量必須與 -password 選項(xiàng)配合使用。相對于從中啟動(dòng) eclipse 的目錄來解釋相對路徑。 1.0
    -nl locale
    定義 Eclipse 平臺(tái)在其上運(yùn)行的語言環(huán)境的名稱。Eclipse 平臺(tái)通常自動(dòng)計(jì)算最佳設(shè)置。如果在此處指定該項(xiàng),則這是 Eclipse 平臺(tái)使用的值。此處指定的值可作為 BootLoader.getNL() 用于插件。示例值有:"en_US"和"fr_FR_EURO"。 2.0
    -nolazyregistrycacheloading
    取消激活裝入優(yōu)化的平臺(tái)插件注冊表高速緩存。缺省情況下,僅當(dāng)需要時(shí)才從注冊表高速緩存(可用時(shí))中裝入擴(kuò)展的配置元素,以減少內(nèi)存占用。此選項(xiàng)將在啟動(dòng)時(shí)強(qiáng)制完全裝入注冊表高速緩存。 2.1
    -noregistrycache
    繞過讀寫內(nèi)部插件注冊表高速緩存文件。 2.0
    -nosplash
    運(yùn)行平臺(tái)而不顯示閃屏。 1.0
    -os operatingSystem
    定義 Eclipse 平臺(tái)在其上運(yùn)行的操作系統(tǒng)。Eclipse 平臺(tái)通常使用 Java os.name 屬性的常用值來計(jì)算最佳設(shè)置。如果在此處指定該項(xiàng),則這是 Eclipse 平臺(tái)使用的值。此處指定的值可作為 BootLoader.getOS() 用于插件,并用于解析插件清單文件中提及的路徑中 $os$ 變量的出現(xiàn)。示例值有:"win32"、"linux"、"hpux"、"solaris"和"aix"。 1.0
    -password password
    授權(quán)數(shù)據(jù)庫的密碼。與 -keyring 選項(xiàng)配合使用。 1.0
    -perspective perspectiveId
    啟動(dòng)時(shí)要在活動(dòng)工作臺(tái)窗口中打開的透視圖。如果沒有指定該參數(shù),則將打開關(guān)閉時(shí)活動(dòng)的透視圖。 1.0
    -plugincustomization          propertiesFile
    包含插件首選項(xiàng)缺省設(shè)置的屬性文件的位置。這些缺省設(shè)置覆蓋在主要功能部件中指定的缺省設(shè)置。相對于從中啟動(dòng) eclipse 的目錄來解釋相對路徑。 2.0
    -plugins pluginsFileURL
    (建議不使用;用 -configuration 代替;支持 1.0 兼容)。 指定 Eclipse 平臺(tái)查找插件的文件的位置,表示為 URL。該文件為屬性文件格式,其中鍵是任意用戶定義名稱,值是指向 plugin.xml 文件的顯式路徑或指向包含插件的目錄的路徑的用逗號(hào)分隔的列表。注意,不允許使用相對 URL。如果指定此項(xiàng),則此選項(xiàng)會(huì)導(dǎo)致創(chuàng)建適當(dāng)?shù)呐R時(shí)配置。 *1.0
    -refresh
    啟動(dòng)時(shí)執(zhí)行工作區(qū)的全局刷新的選項(xiàng)。這將使從上次平臺(tái)運(yùn)行以來在文件系統(tǒng)中所做的任何更改一致。 1.0
    -showlocation
    用于在窗口標(biāo)題欄中顯示工作區(qū)的位置的選項(xiàng)。在發(fā)行版 2.0 中,此選項(xiàng)僅與 -data 命令行自變量一起使用。 2.0
    -showsplash params
    用于顯示閃屏(由可執(zhí)行的 Eclipse 平臺(tái)啟動(dòng)器執(zhí)行)的內(nèi)部選項(xiàng)。此選項(xiàng)在閃屏處理鏈中不同的位置有不同的語法和語義。 2.0
    -vm vmPath
    要用來運(yùn)行 Eclipse 平臺(tái)的"Java 運(yùn)行時(shí)環(huán)境"(JRE)的位置。如果不指定此項(xiàng),則 JRE 位于 jre(它是 Eclipse 可執(zhí)行文件的兄弟目錄)。相對于從中啟動(dòng) eclipse 的目錄來解釋相對路徑。 1.0
    -ws windowSystem
    定義 Eclipse 平臺(tái)在其上運(yùn)行的 Windows 系統(tǒng)。Eclipse 平臺(tái)通常使用 Java os.name 屬性的常用值來計(jì)算最佳設(shè)置。如果在此處指定該項(xiàng),則這是 Eclipse 平臺(tái)使用的值。此處指定的值可作為 BootLoader.getWS() 用于插件、用于配置 SWT 以及用于解析插件清單文件中提及的路徑中 $ws$ 變量的出現(xiàn)。示例值有:"win32"、"motif"和"gtk"。 1.0

    將 -vmargs 條目后面的所有自變量(但不包括 -vmargs)作為虛擬機(jī)自變量(即,在要運(yùn)行的類的前面)直接傳遞到所指示的 Java VM。注意:如果 Eclipse 啟動(dòng)在 Java vm 自變量(-vmargs)之后提供的自變量(例如,-data),則 Eclipse 將不會(huì)啟動(dòng)并且您將接收到"JVM 已終止。出口代碼為 1"的錯(cuò)誤。

    在不同的 VM 上運(yùn)行
    在 J9 上運(yùn)行 Eclipse
    當(dāng)在 J9 版本 1.5 上運(yùn)行 Eclipse 時(shí),建議使用以下 VM 選項(xiàng):

    eclipse.exe [eclipse arguments] -vm path_to_j9w.exe             -vmargs -ms:32 -mm:2048 -mo:32768 -moi:32768 -mca:32 -mco:128 -mx:2000000
    當(dāng)在 J9 版本 2.0 上運(yùn)行 Eclipse 時(shí),J9W 選擇的缺省自變量應(yīng)為合適的選項(xiàng)。但是,要覆蓋 Eclipse 可執(zhí)行文件以內(nèi)部方式自動(dòng)設(shè)置的參數(shù),必須指定 -vmargs 不帶任何參數(shù),如下所示:

    eclipse.exe [eclipse arguments] -vm path_to_j9w.exe -vmargs
    有關(guān)進(jìn)一步信息,參考 J9 VM 文檔和幫助。

    在 IBM Developer Kit, Java(TM) Technology Edition VM 上運(yùn)行 Eclipse
    IBM Developer Kit, Java(TM) Technology Edition 1.3 Linux 的缺省 VM 設(shè)置適合進(jìn)行初期研究工作,但在進(jìn)行大型開發(fā)時(shí)是不夠的。對于大型開發(fā),應(yīng)修改 VM 自變量以使有更多的堆可用。例如,下列設(shè)置將允許 Java 堆增大為 256MB:

    -vmargs -Xmx256M
    posted @ 2005-11-28 15:20 只牽這只狗 閱讀(471) | 評論 (0)編輯 收藏

    程序被BS了...咳...

    posted @ 2005-11-27 18:59 只牽這只狗 閱讀(213) | 評論 (0)編輯 收藏

    頭好暈,發(fā)現(xiàn)又到周末了。
    好好休息一下吧!!!
    posted @ 2005-11-25 16:18 只牽這只狗 閱讀(214) | 評論 (0)編輯 收藏

    下午做業(yè)務(wù)聯(lián)合系統(tǒng)測試,結(jié)果問題一大堆,流程跑了一半跑不下去了,真有些丟人。
    問題總結(jié):
    1. 程序?qū)懙奶R虎。其中一位師兄(比我進(jìn)公司早)寫的那幾支問題最多,當(dāng)然,這也和他負(fù)責(zé)的那支程序復(fù)雜程度有關(guān)(比我寫的那幾支要復(fù)雜),不過只怕主要還是他自己的問題——平時(shí)這位師兄就經(jīng)常對工作滿腹牢騷,但人還是蠻不錯(cuò)的。
    2. 內(nèi)部測試沒有做到位。組內(nèi)的測試馬馬乎乎就過了,不知道做的目的究竟是為了自己還是為了別人。
    3. 領(lǐng)導(dǎo)也催的太急??斓皆碌琢耍瑸榱丝冃Т叩木o,迫的我們這些日子天天加班。雖然我并不介意加班,但也不能把我們當(dāng)機(jī)器人吧?!椰F(xiàn)在就是在加班的時(shí)間,抽空更新一下BLOG,氣死他。
    這次測試,都還沒跑到我的那幾支,不過自我感覺良好,哈!
    posted @ 2005-11-24 19:24 只牽這只狗 閱讀(247) | 評論 (0)編輯 收藏

    昨天申請的BLOG開通了,在準(zhǔn)備寫點(diǎn)東西的時(shí)候,我負(fù)責(zé)的系統(tǒng)卻發(fā)生了一個(gè)異常。所以,不得不去處理。剛吃完飯,想了想就把這個(gè)問題寫上來好了。
    今天系統(tǒng)出現(xiàn)了一個(gè)奇怪的錯(cuò)誤,令我奇怪的不是這個(gè)錯(cuò)誤本身,而是這個(gè)異常在發(fā)生的時(shí)候竟然沒有被拋出。后來才發(fā)現(xiàn),這個(gè)被調(diào)用的方法在上一個(gè)系統(tǒng)中自己處理了異常而沒有throws出來,結(jié)果讓程序帶錯(cuò)繼續(xù)跑了下去,結(jié)果,錯(cuò)誤發(fā)生到我的系統(tǒng)上了。真糟糕!
    今天還有一個(gè)收獲,那就是終于知道錯(cuò)誤日志的記錄規(guī)則。汗...因?yàn)榻舆@個(gè)系統(tǒng)不久,所以很多都還沒認(rèn)真看過...以后一定要多把各個(gè)方面都多看一下...
    [code]
    COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0413N  Overflow occurred during numeric data type conversion.  SQLSTATE=22003

     at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(SQLExceptionGenerator.java(Compiled Code))
     at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(SQLExceptionGenerator.java(Inlined Compiled Code))
     at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_return_code(SQLExceptionGenerator.java(Compiled Code))
     at COM.ibm.db2.jdbc.app.DB2Statement.execute2(DB2Statement.java(Compiled Code))
     at COM.ibm.db2.jdbc.app.DB2Statement.executeUpdate(DB2Statement.java(Compiled Code))
     at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.pmiExecuteUpdate(WSJdbcStatement.java(Compiled Code))
     at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.executeUpdate(WSJdbcStatement.java(Compiled Code))
     ........................[/code]

    posted @ 2005-11-24 12:51 只牽這只狗 閱讀(1821) | 評論 (0)編輯 收藏

    僅列出標(biāo)題
    共3頁: 上一頁 1 2 3 
    主站蜘蛛池模板: 久久亚洲精品中文字幕三区| 久久久久久国产a免费观看不卡| 亚洲av无码专区在线播放| 免费观看大片毛片| 99视频在线免费看| 久青草视频97国内免费影视| 亚洲aⅴ无码专区在线观看| 亚洲成人福利网站| 亚洲AV乱码一区二区三区林ゆな | 国产亚洲一区二区精品| 日本xxwwxxww在线视频免费| 免费成人激情视频| 午夜精品免费在线观看 | 亚洲Av无码精品色午夜| 国产成人99久久亚洲综合精品| 爽爽日本在线视频免费| 黄瓜视频高清在线看免费下载| 最近2019免费中文字幕视频三| 182tv免费视频在线观看| 国产免费伦精品一区二区三区| 色窝窝亚洲av网| 蜜桃传媒一区二区亚洲AV| 亚洲影视自拍揄拍愉拍| 亚洲一卡二卡三卡| 亚洲美女在线观看播放| 久久亚洲精品人成综合网| 亚洲AV电影院在线观看| 亚洲成色www久久网站夜月| 亚洲AV无码专区电影在线观看| 久久国产成人亚洲精品影院 | 色老头综合免费视频| 免费国产在线精品一区| 特级毛片A级毛片100免费播放| 亚洲国产一区二区三区在线观看| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲性色AV日韩在线观看| 亚洲欧美日韩中文二区| 亚洲精品自偷自拍无码| 激情小说亚洲图片| 曰韩无码AV片免费播放不卡 | 国产亚洲精品国产|