Binge's Blog

          網絡文摘集(Java篇)
          posts - 4, comments - 0, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2006年11月28日

          EJB 與 JAVA BEAN 的區別?
          答: Java Bean 是可復用的組件,對 Java Bean 并沒有嚴格的規范,理論上講,任何一個 Java 類都可以是一個 Bean 。但通常情況下,由于 Java Bean 是被容器所創建(如 Tomcat) 的,所以 Java Bean 應具有一個無參的構造器,另外,通常 Java Bean 還要實現 Serializable 接口用于實現 Bean 的持久性。 Java Bean 是不能被跨進程訪問的。 Enterprise Java Bean 是分布式組件。它是基于 Java 的遠程方法調用( RMI )技術的,所以 EJB 可以被遠程訪問(跨進程、跨計算機)。但 EJB 必須被布署在諸如 Webspere 、 WebLogic 這樣的容器中, EJB 客戶從不直接訪問真正的 EJB 組件,而是通過其容器訪問。 EJB 容器是 EJB 組件的代理, EJB 組件由容器所創建和管理。客戶通過容器來訪問真正的 EJB 組件。

          EJB 是基于哪些技術實現的?并說出 SessionBean 和 EntityBean 的區別, StatefulBean 和 StatelessBean 的區別。
          答: EJB 包括 Session?Bean 、 Entity?Bean 、 Message?Driven?Bean ,基于 JNDI 、 RMI 、 JAT 等技術實現。
          從功能上講:
          SessionBean 被用來完成一些服務器端的業務操作,例如訪問數據庫、調用其他 EJB 組件。
          EntityBean 被用來代表應用系統中用到的數據。
          對于客戶機, SessionBean 是一種非持久性對象,它實現某些在服務器上運行的業務邏輯。
          Session?Bean? 還可以再細分為 ?Stateful?Session?Bean? 與 ?Stateless?Session?Bean? ,這兩種的 ?Session?Bean 都可以將系統邏輯放在 ?method 之中執行,不同的是 Stateful?Session?Bean? 可以記錄呼叫者的狀態,因此通常來說,一個使用者會有一個相對應的 ?Stateful?Session?Bean? 的實體。 Stateless?Session?Bean? 雖然也是邏輯組件,但是他卻不負責記錄使用者狀態,也就是說當使用者呼叫 ?Stateless?Session?Bean? 的時候, EJB?Container? 并不會找尋特定的 ?Stateless?Session?Bean? 的實體來執行這個 ?method 。換言之,很可能數個使用者在執行某個 ?Stateless?Session?Bean? 的 ?methods? 時,會是同一個 ?Bean? 的 ?Instance? 在執行。從內存方面來看, ?Stateful?Session?Bean? 與 ?Stateless?Session?Bean? 比較, ?Stateful?Session?Bean? 會消耗 ?J2EE?Server? 較多的內存,然而 ?Stateful?Session?Bean? 的優勢卻在于他可以維持使用者的狀態。
          對于客戶機, EntityBean 是一種持久性對象,可分為 Bean 管理的持續性( BMP )和容器管理的持續性( CMP )兩種 。它代表一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現有企業應用程序實現的實體。

          從生命周期上分:
          SessionBean : Stateless?Session?Bean? 的生命周期是由容器決定的,當客戶機發出請求要建立一個 Bean 的實例時, EJB 容器不一定要創建一個新的 Bean 的實例供客戶機調用,而是隨便找一個現有的實例提供給客戶機。當客戶機第一次調用一個 Stateful?Session?Bean? 時,容器必須立即在服務器中創建一個新的 Bean 實例,并關聯到客戶機上,以后此客戶機調用 Stateful?Session?Bean? 的方法時容器會把調用分派到與此客戶機相關聯的 Bean 實例。
          EntityBean : Entity?Beans 能存活相對較長的時間,并且狀態是持續的。只要數據庫中的數據存在, Entity?beans 就一直存活。而不是按照應用程序或者服務進程來說的。即使 EJB 容器崩潰了, Entity?beans 也是存活的。 Entity?Beans 生命周期能夠被容器或者 ?Beans 自己管理。
          EJB 通過以下技術管理實務:對象管理組織( OMG )的對象實務服務( OTS ), Sun?Microsystems 的 Transaction?Service ( JTS )、 Java?Transaction?API ( JTA ),開發組( X/Open )的 XA 接口。

          EJB 的角色和三個對象 以及remote 接口和 home 接口主要作用
          答: 一個完整的基于 EJB 的分布式計算結構由六個角色組成,這六個角色可以由不同的開發商提供,每個角色所作的工作必須遵循 Sun 公司提供的 EJB 規范,以保證彼此之間的兼容性。這六個角色分別是 EJB 組件開發者( Enterprise?Bean?Provider ) ? 、應用組合者( Application?Assembler )、部署者( Deployer )、 EJB? 服務器提供者( EJB?Server?Provider )、 EJB? 容器提供者( EJB?Container?Provider )、系統管理員( System?Administrator )
          三個對象是 Remote ( Local )接口、 Home ( LocalHome )接口, Bean 類
          remote 接口定義了業務方法,用于 EJB 客戶端調用業務方法。
          home 接口是 EJB 工廠用于創建和移除查找 EJB 實例

          EJB 容器提供的服務
          答: 主要提供聲明周期管理、代碼產生、持續性管理、安全、事務管理、鎖和并發行管理等服務。

          EJB 規范規定 EJB 中禁止的操作有哪些? ?
          ? 答: 1. 不能操作線程和線程 API( 線程 API 指非線程對象的方法如 notify,wait 等 ) , 2. 不能操作 awt , 3. 不能實現服務器功能, 4. 不能對靜態屬生存取, 5. 不能使用 IO 操作直接存取文件系統, 6. 不能加載本地庫 . , 7. 不能將 this 作為變量和返回, 8. 不能循環調用。

          bean? 實例的生命周期
          答: 對于 Stateless?Session?Bean 、 Entity?Bean 、 Message?Driven?Bean 一般存在緩沖池管理,而對于 Entity?Bean 和 Statefull?Session?Bean 存在 Cache 管理,通常包含創建實例,設置上下文、創建 EJB?Object ( create )、業務方法調用、 remove 等過程,對于存在緩沖池管理的 Bean ,在 create 之后實例并不從內存清除,而是采用緩沖池調度機制不斷重用實例,而對于存在 Cache 管理的 Bean 則通過激活和去激活機制保持 Bean 的狀態并限制內存中實例數量。

          EJB 的激活機制
          答: 以 Stateful?Session?Bean? 為例:其 Cache 大小決定了內存中可以同時存在的 Bean 實例的數量,根據 MRU 或 NRU 算法,實例在激活和去激活狀態之間遷移,激活機制是當客戶端調用某個 EJB 實例業務方法時,如果對應 EJB?Object 發現自己沒有綁定對應的 Bean 實例則從其去激活 Bean 存儲中(通過序列化機制存儲實例)回復(激活)此實例。狀態變遷前會調用對應的 ejbActive 和 ejbPassivate 方法。

          客服端調用 EJB 對象的幾個基本步驟
          答: 設置 JNDI 服務工廠以及 JNDI 服務地址系統屬性,查找 Home 接口,從 Home 接口調用 Create 方法創建 Remote 接口,通過 Remote 接口調用其業務方法。

          應用服務器

          應用服務器有那些?
          答: BEA?WebLogic?Server , IBM?WebSphere?Application?Server , Oracle9i?Application?Server , jBoss , Tomcat

          如何給 weblogic 指定大小的內存 ??
          答: 在啟動 Weblogic 的腳本中(位于所在 Domain 對應服務器目錄下的 startServerName ),增加 set?MEM_ARGS=-Xms32m?-Xmx200m ,可以調整最小內存為 32M ,最大 200M。

          EJB 需直接實現它的業務接口或 Home 接口嗎,請簡述理由。
          答:遠程接口和 Home 接口不需要直接實現,他們的實現代碼是由服務器產生的,程序運行中對應實現類會作為對應接口類型的實例被使用。

          如何設定的 weblogic 的熱啟動模式 ( 開發模式 ) 與產品發布模式 ?
          答: 可以在管理控制臺中修改對應服務器的啟動模式為開發或產品模式之一。或者修改服務的啟動文件或者 commenv 文件,增加 set?PRODUCTION_MODE=true 。

          如何啟動時不需輸入用戶名與密碼 ?
          答: 修改服務啟動文件,增加 ?WLS_USER 和 WLS_PW 項。也可以在 boot.properties 文件中增加加密過的用戶名和密碼 .

          weblogic 管理制臺中對一個應用域 ( 或者說是一個網站 ,Domain) 進行 jms 及 ejb 或連接池等相關信息進行配置后 , 實際保存在什么文件中 ?
          答: 保存在此 Domain 的 config.xml 文件中,它是服務器的核心配置文件。

          說說 weblogic 中一個 Domain 的缺省目錄結構 ? 比如要將一個簡單的 helloWorld.jsp 放入何目錄下 , 然的在瀏覽器上就可打入 http:// 主機 : 端口號 //helloword.jsp 就可以看到運行結果了 ? ? 又比如這其中用到了一個自己寫的 javaBean 該如何辦 ?
          答: Domain 目錄服務器目錄 applications ,將應用目錄放在此目錄下將可以作為應用訪問,如果是 Web 應用,應用目錄需要滿足 Web 應用目錄要求, jsp 文件可以直接放在應用目錄中, Javabean 需要放在應用目錄的 WEB-INF 目錄的 classes 目錄中,設置服務器的缺省應用將可以實現在瀏覽器上無需輸入應用名。

          在 weblogic 中發布 ejb 需涉及到哪些配置文件
          答: 不同類型的 EJB 涉及的配置文件不同,都涉及到的配置文件包括 ejb-jar.xml,weblogic-ejb-jar.xmlCMP 實體 Bean 一般還需要 weblogic-cmp-rdbms-jar.xml?
          86 、如何在 weblogic 中進行 ssl 配置與客戶端的認證配置或說說 j2ee( 標準 ) 進行 ssl 的配置
          缺省安裝中使用 DemoIdentity.jks 和 DemoTrust.jks??KeyStore 實現 SSL ,需要配置服務器使用 Enable?SSL ,配置其端口,在產品模式下需要從 CA 獲取私有密鑰和數字證書,創建 identity 和 trust?keystore ,裝載獲得的密鑰和數字證書。可以配置此 SSL 連接是單向還是雙向的。

          如何查看在 weblogic 中已經發布的 EJB?
          答: 可以使用管理控制臺,在它的 Deployment 中可以查看所有已發布的 EJB
          說說在 weblogic 中開發消息 Bean 時的 persistent 與 non-persisten 的差別
          persistent 方式的 MDB 可以保證消息傳遞的可靠性 , 也就是如果 EJB 容器出現問題而 JMS 服務器依然會將消息在此 MDB 可用的時候發送過來,而 non - persistent 方式的消息將被丟棄。

          posted @ 2006-11-29 12:28 batistuta 閱讀(935) | 評論 (0)編輯 收藏

          WebLogic 是一套基于JAVA功能強大的電子商務套件,提供了許多功能強大的中間件 以方便編程人員編寫的JSP、SERVLET 等電子商務應用,可以為企業提供一個完整的商務應用 解決方案。

          posted @ 2006-11-29 10:49 batistuta 閱讀(319) | 評論 (0)編輯 收藏

          最近在同事的建議下,看了一下SVN的一些東西,感覺不錯,下邊是看完后發現的一些比較好的文章,這里提供一個索引,便于大家學習,另說說SVN的本地
          一,索引:
          SVN官方網站:http://subversion.tigris.org/
          SVN中文官方網站:http://subversion.tigris.org.cn/
          SVN和其它版本控制軟件的比較:http://robinlet.bokee.com/2866408.html
          如何從CVS過渡到SVN:http://cvs2svn.tigris.org/
          SVN的客戶端:http://tortoisesvn.tigris.org
          SVN的Eclipse集成:建議直接從官方網站直接update

          二,平時是否經常會自己寫一些東西呢,或者為了興趣,或者為了測試某些東西,這些東西不知道那天就用的到,如果不小心丟了挺可惜的,而且過程有時也很重要。這個時候,使用一個版本控制軟件是好的選擇,但是哪個更好用呢,這里介紹一下SVN的本地方式,個人感覺很好用:
          1,安裝本地SVN:
          到這里:http://tortoisesvn.tigris.org下載SVN的客戶端tortoisesvn,然後安裝,完成后重起,他就自動集成到Windows的資源管理器中了,如圖所示這個時候本地SVN就安裝完了,是否很簡單呢


          2,使用SVN:
          建立Local Repository,在你想保存SVN版本控制文件的地方右鍵,如圖選擇


          完成后,你就可以嘗試添加工程:
          對話框內填入的目錄是你剛才選擇的存放版本文件的目錄

          好了,換一個文件夾,嘗試checkout,更改,提交,對比等功能吧,基本和cvs使用差不多,但是增加了原子遞交等功能.
          3,可以安裝了eclipse的插件,這樣使用起來會更方便些

          附:視頻教程http://www.subversion.org.cn/media/all.swf

          posted @ 2006-11-28 13:41 batistuta 閱讀(468) | 評論 (0)編輯 收藏

          很多網友問我學習Java有沒有什么捷徑,我說“無他,唯手熟爾”。但是我卻很愿意將自己學習的一些經驗寫出來,以便后來者少走彎路,幫助別人是最大的快樂嘛!
          要想學好Java,首先要知道Java的大致分類。我們知道,自從Sun推出Java以來,就力圖使之無所不包,所以Java發展到現在,按應用來分主要分為三大塊:J2SE,J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標準版,主要用于桌面應用軟件的編程;J2ME主要應用于嵌入是系統開發,如手機和PDA的編程;J2EE是Java2的企業版,主要用于分布式的網絡程序的開發,如電子商務網站和ERP系統。J2SE開發桌面應用軟件比起VC,VB,DEPHI這些傳統開發語言來說,優勢好象并不明顯。J2ME對于初學者來說,好象又有點深奧,而且一般開發者很難有開發環境。所以現在應用最廣泛又最好學的就是J2EE了。J2EE又包括許多組件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要學習起來可不是一兩天的事。
          那么又該如何學習J2EE呢?當然Java語法得先看一看的,I/O包,Util包,Lang包你都熟悉了嗎?然后再從JSP學起。如果你學過HTML,那么事情要好辦的多,如果沒有,那你快去補一補HTML基礎吧。其實JSP中的Java語法也不多,它更象一個腳本語言,有點象ASP。然后你就該學一學Servlet了。Servlet就是服務器端小程序,他負責生成發送給客戶端的HTML文件。JSP在執行時,也是先轉換成Servlet再運行的。雖說JSP理論上可以完全取代Servlet,這也是SUN推出JSP的本意,可是Servlet用來控制流程跳轉還是挺方便的,也令程序更清晰。接下來你應該學習一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代碼的混亂方式了,這種方式跟ASP又有什么區別呢?還好,SUN提供了Javabean可以把你的JSP中的Java代碼封裝起來,便于調用也便于重用。接著就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean還是有區別的。它是一個體系結構,你可以搭建更安全、更穩定的企業應用。它的大量代碼已由中間件(也就是我們常聽到的Weblogic,Websphere這些J2EE服務器)完成了,所以我們要做的程序代碼量很少,大部分工作都在設計和配置中間件上。至于JDBC,就不用我多說了,你如果用java編過存取數據庫的程序,就應該很熟悉。還有,如果你要用Java編發送電子郵件的程序,你就得看看Javamail了。
          好了,對Java和J2EE有了一些基本概念之后,你就應該編一些程序了,千萬不要紙上談兵哦。最好找一些有實例且帶光盤的書來看,這樣看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它 再輸一遍吧,再說直接復制還不用怕出錯,何樂而不為呢!還有就是要經常上一些好的Java編程文章,有好的文章要Cut下來,有問題盡管問,只要問題不是太傻,一般高手都會回答你的。下面介紹幾個好的Java方面的編程網站:
          CSDN論壇 http://www.csdn.net/ 中國最有名的技術論壇,《程序員》雜志就是他們出版的,你可以在上面提出問題,馬上就有人回答你,如果你覺得好,你可以給那人加分;
          Java研究組織http://www.javaresearch.org/ 上面有很多原創文章,高手還是挺多的;
          Java開發者 http://www.chinajavaworld.com/ 那里Java資料比較全;
          IBM的開發者網絡http://www-900.ibm.com/developerWor...ava/index.shtml IBM永遠的藍色巨人;
          http://www.javastudy.org/[url]這個?..//www.jdon.com/ 去下載,或到同濟技術論壇的服務器上ftp://nro.shtdu.edu.cn去下,安裝上?..壇上去提問。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規范而推出的開放源碼的程序,應該很具有權威性,想學J2EE和EJB的朋友不要錯過了。
          你一定會高興地說,哈哈,原來成為Java高手就這么簡單啊!記得Tomjava也曾碰到過一個項目經理,號稱Java很簡單,只要三個月就可以學會。其實說這種話的人就如當年小日本號稱“三個月拿下中國”一樣大言不慚。不是Tomjava潑你冷水,你現在只是學到了Java的骨架,卻還沒有學到Java的精髓。接下來你得研究設計模式了。設計模式是高級程序員真正掌握面向對象核心思想的必修課。設計模式并不是一種具體"技術",它講述的是思想,它不僅僅展示了接口或抽象類在實際案例中的靈活應用和智慧,讓你能夠真正掌握接口或抽象類的應用,從而在原來的Java語言基礎上躍進一步,更重要的是,設計模式反復向你強調一個宗旨:要讓你的程序盡可能的可重用。關于設計模式的資料,還是向大家推薦banq的網站http://www.jdon.com/ ,他把GOF的23種模式以通俗易懂的方式詮釋出來,純Java描述,真是經典中的經典。有時間再研究一下MVC結構(把Model-View-Control分離開的設計思想)吧,現在很流行的Structs就是它的一種實現方式,不過Structs用起來實在是很繁,我們只要學習其精髓即可,我們完全可以設計自己的MVC結構。然后你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會上一個臺階。
          做完這些,你不如整理一下你的Java代碼,把那些經典的程序和常見的應用整理出來,再精心打造一番,提高其重用性和可擴展性。你再找幾個志同道合的朋友成立一個工作室吧,你可以去承接一些項目做了,一開始可能有些困難,可是你有技術積累,又考慮周全,接下項目來可以迅速作完,相信大家以后都會來找你的,所以Money就嘩啦啦的來了。。。。。。
          當然你也可以參加一些開源項目,一方面可以提高自己,另一方面也是為中國軟件事業做貢獻嘛!開發者在互聯網上用CVS合作開發,用QQ,MSN,E-mail討論聯系,天南海北的程序員分散在各地卻同時開發同一個軟件,是不是很有意思呢?
          下面介紹兩個好的開源項目網站:
          湖北省軟件公共開發平臺http://gro.clinux.org/
          共創聯盟http://cosoft.org.cn/
          哇,好高興哦,我終于成為高手了!非也,非也。古人云:“識時務者為俊杰”。你知道計算機界現在的發展形勢嗎?你知道微軟的.NET藍圖和SUN ONE計劃之間的明爭暗斗嗎?你知道計算機技術將向何處發展嗎?其實從各大計算機廠商最近的動作,都可以看出來“Web服務將是下一代互聯網應用的制高點”,而微軟的.NET藍圖和SUN ONE計劃的斗爭焦點,也就是Web服務。Web服務就是一個嶄新的分布式計算模型,它是一系列標準的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語言編寫的軟件能夠輕易的集成起來,使網絡資源和Web站點變成一種服務而不是混亂的垃圾場。不遠的將來,我們就可以在家里點擊一下鼠標,就可以完成出門旅游的全部準備工作,包括定飛機票,定旅游線路,定好房間等。請注意,這所有的一切都是Web站點間自動完成的,再也不用象現在一樣,表面上是電子商務,實際上很多環節都是人工操作。也許你會覺得這是天方夜談,不過就近的說,你也很有可能承接一個項目,要集成兩個企業的ERP系統。很有可能上游企業的系統是用Dephi編的,而下游企業的系統是用Java編的。你說你是Java高手,大家都看者你怎么做呢。所以啊,你還得學習新技術,如Web服務,而且你Dephi也要懂一點吧(Dephi6現在已經提供Web服務的控件了)。 你編的Java系統,可能要和.NET集成,所以你.NET要懂一點吧?到最后,你可能發現你已經成為Java高手了,但很多時間卻在搞別的技術。太極張三豐里說,最厲害的招式就是沒有招式,可能就是這個道理吧!
          因為剛剛興起,所以網上Web服務的資料不是很多,我還是給大家推薦幾個網站吧:
          中國UDDI技術聯盟http://www.uddi-china.org/
          CSDN的柴曉路專欄http://www.csdn.net/develop/author/...uthor/fennivel/ (注:柴曉路也是互聯網上一個有名的人物,他發表過很多關于Web服務的文章,還出了一書,應該稱的上是中國Web服務技術的先行者)
          IBM的開發者網絡的XML&Web Service專欄:
          http://www-900.ibm.com/developerWor...ndex.shtml?csdn IBM可是Web服務的力推者
          嗚…你費勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動啊!那么打個電話告訴我吧,什么?我的電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的……
          author: tomjava


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

          posted @ 2006-11-28 11:25 batistuta 閱讀(289) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 通辽市| 丹东市| 息烽县| 茶陵县| 竹北市| 通榆县| 张家口市| 铜陵市| 郓城县| 新化县| 阿城市| 武平县| 津南区| 志丹县| 鹰潭市| 塘沽区| 惠水县| 抚州市| 固原市| 桐庐县| 酉阳| 福建省| 百色市| 霍林郭勒市| 康保县| 禹州市| 西乡县| 铁岭市| 乳山市| 汶川县| 威宁| 西丰县| 鸡西市| 嵊州市| 百色市| 溆浦县| 柘荣县| 沁阳市| 杭锦旗| 昂仁县| 灌阳县|