中間件復(fù)習(xí)筆記_第1頁
中間件復(fù)習(xí)筆記_第2頁
中間件復(fù)習(xí)筆記_第3頁
中間件復(fù)習(xí)筆記_第4頁
中間件復(fù)習(xí)筆記_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

2015年-11月-13日第一章INTRO概念一類獨立的系統(tǒng)軟件和服務(wù)程序Aclassofstandalonesystem-levelsoftwareandservicesprocedures在操作系統(tǒng)的頂部WorkingonthetopofOS管理計算機(jī)資源和網(wǎng)絡(luò)Managingcomputationalresourcesandnetworkcommunications支持分布式通信Supportingdistributedappsb)功能在異構(gòu)的網(wǎng)絡(luò)環(huán)境中,涉及到跨連通性和可操作問題中提供統(tǒng)一的協(xié)議和接口Providingstandardizedinterfacesandprotocols隱藏實現(xiàn)細(xì)節(jié)Hidingimplementationdetails提高程序的可移植性Increasingtheportabilityofapps放置于操作系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)的頂部為高級應(yīng)用的開發(fā)和執(zhí)行提供環(huán)境Providingenvironmentsfortheexecutionanddevelopmentofhigher-levelapps協(xié)助軟件工程師靈活高效地開發(fā)和集成復(fù)雜的分布式軟件Assistingsoftwareengineersinflexiblyandefficientlydevelopingandintegratingcomplexdistributedsoftware中間件發(fā)展的主要因素隱藏異構(gòu)型Hidingheterogeneity硬件異構(gòu)hardwareheterogeneity操作系統(tǒng)異構(gòu)OSheterogeneity數(shù)據(jù)庫異構(gòu)databaseheterogeneity支持可操作性supportinginter-operability不同的平臺differentplatforms不同的網(wǎng)絡(luò)協(xié)議differentnetworkprotocols不同的通信機(jī)制differentcommunicationmechanisms提高軟件的復(fù)用率improvingefficiencyandqualityofsoftwaredevelopment主要類別對象請求代理中間件ORBobjectrequestbrokersmiddleware面向信息中間件MOMmessage-orientedmiddleware數(shù)據(jù)庫訪問中間件DAMdatabaseaccessmiddleware事務(wù)處理中間件TPMtransactionprocessingmiddleware第二章RMI對象請求代理ORB提供一個框架,使得遠(yuǎn)程對象可以在網(wǎng)絡(luò)中以同樣的方式使用在網(wǎng)絡(luò)中的本地對象Providingaframeworkwhereremoteobjectcanuselocalobjectsinthesamewayoverthenetwork當(dāng)對象在客戶端和服務(wù)器之間傳遞時,提供功能的編組和解組的功能Providingfunctionalitiesformarshallingandunmarshalingwhenobjectsaretransmittedbetweenclientsandservers.客戶端和服務(wù)器之間的傳輸隱藏實現(xiàn)的細(xì)節(jié),這使得開發(fā)人員能夠有效地實現(xiàn)分布式應(yīng)用程序,而無需面對復(fù)雜的底層操作系統(tǒng)和網(wǎng)絡(luò)通信Hidingtheimplementationdetails,whichenabledeveloperstoimplementdistributedappsefficientlywithoutfacingthecomplexunderlyingoperatingsystemsandnetworkcommunicationsJAVARMI的概述WritingdistributedobjectsusingjavaSimpleanddirectmodelfordistributedcomputationwithjavaobjects以java為中心,由此帶來了安全性和分布式計算的可移植性Centeredaroundjava,thusbringingthepowerofJavaSafetyandportabilitytodistributedcomputing行為可以被轉(zhuǎn)移動Behaviorcanberemoved通過JNI可以鏈接到現(xiàn)有的遺留系統(tǒng)Connectedexistedlegacysystemby JNI通過JDBC可以鏈接到關(guān)系數(shù)據(jù)庫ConnectedrelationaldatabasebyJDBC優(yōu)點面向?qū)ο驩O全部的對象可以作為參數(shù)和返回值A(chǔ)llobjectscanbeargumentsandreturnvalues可移動性行為mobilebehavior類的實現(xiàn)可以被移植Theimplementationsofclasscanbemoved設(shè)計模式designpatterns傳遞性對象確保了面向?qū)ο蠹夹g(shù)的全功率PassingobjectsensurethefullpowerofOOtechs基于JAVA的安全機(jī)制:安全經(jīng)理BasedonJAVAsecuritymechanismssecuritymanager次優(yōu)點十分容易開發(fā),使用,維護(hù)Easytowrite,useandmaintain可以與現(xiàn)存的遺留系統(tǒng)鏈接canconnectwithexistedlegacysystemRMI/JNI,RMI/JDBC開發(fā)一次,可以在任何地方運行writeonce,canbeuseanywhere100%移植到任何JVM100%portabletoanyJVM分布式垃圾收集distributedgarbagecollection并行計算parallelcomputing多線程,并行處理MUTI-thread,concurrentprocessing架構(gòu)architecture存根stub1.編組參數(shù),發(fā)送調(diào)用Marshalingarguments,sendinginvocation骨骼skeleton解封參數(shù),調(diào)用服務(wù)器來實現(xiàn)Unmarshalingarguments,invokingserver'simplementationf)RMI的分布式應(yīng)用定位遠(yuǎn)程對象locateremoteobjects與遠(yuǎn)程對象通信communicatewithremoteobjectsiii.為被傳遞的對象加載類定義loaddefinitionofclassesthatarepassedaroundg)遠(yuǎn)程接口,對象和方法remoteinterface,objectsandmethods通過實現(xiàn)一個具有以下特點的遠(yuǎn)程接口來實現(xiàn)對象遠(yuǎn)程化Anobjectsbecomesremotebyimplementingaremoteinterfacewithfollowingcharacteristics—個遠(yuǎn)程接口擴(kuò)展了接口oneremoteinterfaceextendsaninterfaceJava.rmi.remote接口的每—個方法都有事先聲明everymethodsoftheinterfacehasbeendeclareda)Java.rmi.RemoteExceptioninitsthrowsclauseh)主要步驟mainsteps定義遠(yuǎn)程接口definetheremoteinterfaceremotely可能包括本地接口/方法的實現(xiàn)mayincludetheimplementationoflocalinterface/method客戶實現(xiàn)implementingtheclient1.在遠(yuǎn)程接口定義后的任何時間都可以被實現(xiàn)canbeimplementedanytimewhentheremoteinterfacehasbeendefined第三章JMSa)面向消息中間件MOM在異構(gòu)平臺上發(fā)送/接收分布式應(yīng)用軟件/組件之間的消息Sending/receivingmessagesbetweendistributedapps/componentsovertheheterogeneousplatforms1.支持異步調(diào)用Supportingasynchronouscalls創(chuàng)建一個分布式通信層Createadistributecommunicationlayer1.避免應(yīng)用開發(fā)者接觸來自不同系統(tǒng)和網(wǎng)絡(luò)接口的細(xì)節(jié)InsulatingappdevelopersfromthedetailsaboutdifferentOSandnetworkinterfaces在不同平臺和網(wǎng)絡(luò)上的API通常是MOM提供的TheAPISfromdifferentplatformsandnetworkareprovidedbyMOM比較異步通信Asynchronouscommunication組件松散耦合Loosely-coupledcomponentsRPC/ORB1.同步通信Synchronouscommunication組件緊密耦合Tightly-coupledcomponentsMOM標(biāo)準(zhǔn)i.歷史上,缺乏MOM的準(zhǔn)確標(biāo)準(zhǔn)Therewasalackofstandardsinthehistory.高級消息隊列協(xié)議AMQPAdvancedMessageQueuingProtocol數(shù)據(jù)分發(fā)服務(wù)DDSDataDistributionService可擴(kuò)展消息和存在協(xié)議XXMPextensibleMessagingandPresenceProtocolJava消息服務(wù)的JAVAEEJavaMessageServicebyJAVAEE由大多數(shù)MOM供應(yīng)商實施,旨在隱藏特定的MOMAPI實現(xiàn)方法ImplementedbymostMOMvendorsandaimstohidetheparticularJavaMessageService—種JAVAAPI接□,允許應(yīng)用程序創(chuàng)建發(fā)送接收讀取消息AjavaAPIthatallowsappstocreate,send,receiveandreadmessages定義一組通用接□和關(guān)聯(lián)用語Definesasetofcommoninterfaceandassociatedsemantics通過JMS的提供者,力爭最大力度的提高JMS應(yīng)用程序的可移植性TrythebesttoimprovetheportabilityofJMSappsacrossJMSproviders使得通信變得松散耦合的,異步的,可靠的Enablingcommunicationthatislooselycoupled,asynchronous,andreliable當(dāng)用JMS的時候提供者希望該組件不依賴與其他組件的接□信息,因此組件可以很容易地被替換Providershopethecomponentsdon'trelyonothercomponents'message,socomponentscanbeeasilyreplaced提供者希望該應(yīng)用程序運行時其他組件也同時運行Providerswantstheappstorunwhetherornotallcomponentsareupandrunningsimultaneously應(yīng)用業(yè)務(wù)模式允許組件將信息發(fā)送到另—個組件,并繼續(xù)操作而不用即時響應(yīng)Applicationbusinessmodelallowscomponentssendmessagetoanothercomponentsandtocontinuetooperatewithoutreceivinganimmediateresponse信息傳遞方式點對點傳送消息方式Pointtopointmessagingstyle1.每個消息都是針對特定隊列的Eachmessageisaddressedtoaspecificqueue隊列將保留所有發(fā)送的消息,直到他們被消耗或者過期Thequeuewillretainallthemessagesthathavebeensentuntiltheyareconsumedorexpire.每一條消息都只有一個消費者Everymessagehasoneconsumerii. 發(fā)布/訂閱消息方式Publish/subscribemessagingstyle1.客戶端可以將信息發(fā)到一個主題里Theclientcansendamessagetoatopic出版社和訂閱者可以動態(tài)的發(fā)布或者訂閱主題Publisherandsubscribercandynamicallypublishorsubscribetothetopic.當(dāng)且僅當(dāng)消息被發(fā)送給訂閱服務(wù)器后,主題才會保留信息Topicwillretainthemessagesonlywhenmessageshavebeensenttothesubscribers每一條信息都可以有多個消費者Eachmessagehasmultipleconsumers當(dāng)一個客戶端創(chuàng)建了一個主題后,另一個訂閱了相應(yīng)主題的客戶端才可以消費已發(fā)送的信息,并且消費者必須要保持活躍來消費信息

Afteraclientcreateatopic,anotherclientwhichhassubscribedthetopiccanconsumemessagesthathavebeensent,andtheconsumermustcontinuetobeactiveinorderforittoconsumemessages.MsgM旳Cltent1Senda*<——Consumes ?Acknowledges—-CNent2QueueMsgC*ieni1——PuMlsties一*GllentSTopicMsgC*ieni1——PuMlsties一*GllentSTopic百 SuDacrlbeaDellrvarsSubscribesDelirversQiams消息消費同步Synchronously1.消費者通過調(diào)用消息接收方法來獲取消息的目的地Consumerfetchesthemessagefromthedestinationbycallingthereceivemethod如果消息沒有在指定時間內(nèi)到達(dá),該接收方法會阻止消息進(jìn)入Thereceivemethodcanblockuntilamessagearrivesorcantimeoutifamessagedosenotarrivewithinaspecifiedtimelimit異步Asynchronously客戶端可以注冊一個消息監(jiān)聽器Theclientcanregisteramessagelistenerwithaconsumer當(dāng)消息到達(dá)目的地時,JMS的提供者通過調(diào)用監(jiān)聽器的onMessage方法來提供信息Whenmessagearrivestothedestination,theproviderofJMSdeliverthemessagebycallingthelistener'sonMessagemethodh) JMS兀素JMS提供者:一個JMS接口的實現(xiàn)JMSprovider:animplementationoftheJMSinterfaceJMS客戶端:一個應(yīng)用或者過程,可以生產(chǎn)/接收消息JMSclient:anapplicationorprocessthatcanproduce/receivemessagesJMS提供者/出版者:創(chuàng)建/發(fā)送消息的客戶端JMSprovider/publisher:aclientthatcancreate/sendmessagesJMS消費者:接收消息的客戶端JMSconsumer:aclientthatcanreceivemessagesJMS消息:包含數(shù)據(jù)的對象,在客戶端之間轉(zhuǎn)移JMSmessage:anobjectincludingdataandtransferredbetweenJMSclientsJMS隊列:一個包含著已經(jīng)被發(fā)送出去并且等待被接收的信息(只有一個消費者)中轉(zhuǎn)區(qū)JMSqueue:aqueuethatincludemessageswhichhavebeensentand

waitingtobereadxiii.JMS主題:一個發(fā)送信息給多個訂閱服務(wù)器的初版發(fā)行機(jī)構(gòu)xiv.JMSTopic:adistributionmechanismforpublishingmessagesthataredeliveredtomultiplesubscribersi)JMS應(yīng)用程序的基本構(gòu)造塊JMSapplication'sbasicbuildingblocksi.ii.iii.管理對象:連接工廠和目的地Administeredobjects:connectionfactoriesanddestinations鏈接iv.Connectionsv.會議vi.Sessionsvii.消息生產(chǎn)者viii.Messageproviderix.消息消費者x.Messageconsumerxi.消息xii.Message

JMSAPIProgrammingModelj)JMS信息類型JMSMessageTypesMessageTypeBodyContentsTextXlessageAjava」iin啟-Stringobject(lorexaimple;thecontentsofanXMLfile). jMapMessageAsetofname-vaAiEpairs,withnamesasStringobjectsandvaluesasprimitivetypesintheJavaprogrannminglanguage.Theentriescanbeaccessedsequentiallybyenumeratororrandomlybynam^.Theorderoftheentriesisundcfincil.BytesMessageAstreamofuninterprEtEdbytes.ThismessagetypeUfbtliterallyencodingabodytomatchynexistinginessagefann?it.StreamMessageAstreamofprimitivevaluesintheJavaprograiniTiin^language,tilledandreadsequentially.ObfectMessageASerializablEobjecTintheJava卩rogramininglanguage.

第四章JDBCa)Intro一套為了建立JAVA編程語言和更大范圍數(shù)據(jù)庫之間獨立性數(shù)據(jù)庫連接的標(biāo)準(zhǔn)JAVAAPI接口b)框架b)框架JDBCArchitecture?JDBCAPI&JDBCDriverAPIJavaApplicationJD8CAPIc)組件JDBCOdvorJDBCDriverManagerc)組件JDBCOdvorJDBCDriverManagerDriverManagerDriverConnectionStatementResultSetSQLexceptionJDBC功能創(chuàng)造一個數(shù)據(jù)庫連接產(chǎn)生SQL聲明在數(shù)據(jù)庫中執(zhí)行SQL語句查看修改產(chǎn)生的記錄生成一個簡單的JDBC應(yīng)用導(dǎo)入包導(dǎo)入數(shù)據(jù)庫連接編程需要的JDBC類的包Importjava.Sql.*;注冊JDBCdriver初始化一個driver,來建立一個與數(shù)據(jù)庫聯(lián)系的通信通道Class.forName(“com.mysql,jdbc,driver”);打開鏈接創(chuàng)造一個鏈接對象,代表著與數(shù)據(jù)庫的物理連接Staticfinalstringuser=”username”;Staticfinalstringpass=”password”;Conn=DriverManager.getConnection(DB_URL.user,pass);執(zhí)行語句為了建造并提交SQL說明給數(shù)據(jù)庫,使用聲明或者準(zhǔn)備聲明Stmt=conn.createStatement();Stringsql;Sql=“SELECTid,name,hometownFROMt_student”;

ResultsSetrs=stmt.executeQuery(sql);對更新,插入,刪除進(jìn)行聲明Stmt=conn.createStatement();Stringsql;Sql=“DELETEFROMt_studentwhereid=1”;Intnum=stmt.executeUpdate(sql);從結(jié)果中提取數(shù)據(jù)1.用resultSet.getXXX()1.用resultSet.getXXX()從結(jié)果中提取數(shù)據(jù)vi.清空環(huán)境while(r5.next(]){//Retnevebycolumnnameintid=rs-getlntC^d");Stringname=rs.getStringC'name11);Stringhometown=rs.getStrjng("hometown");rs.close();stmtxlosef);ronrs.close();stmtxlosef);ronn.close();f)數(shù)據(jù)類型SQLJDBC/JavasetXXXupdateXXXVARCHARjava,lang.StringsetString□pdatestringCHARjavang,StringsetStringupdatestringNUMERICjava.math.BigDecimalsetBigDecimalupdateBigDecimalINTEGERintsetlntupdatelntFLOATfloatsetFloatupdateFloatDOUBLEdoublpsetDoubleupdateDouble□ATEjava.sql.DatesetDateupdateDateTIMEjava.sql.TimesetTimeupdateTimeTIMESTAMPjava.sql.TimesTampsetTimestampupdateTimestampg)執(zhí)行SQL語句發(fā)送查詢語句給數(shù)據(jù)庫發(fā)送更新語句給數(shù)據(jù)庫TheStatementObject?UsingcreateStatement()methodStatementstmt二null;try{stmt二conn.createStatement();}catch(SQLExceptione){}finally{stmt.close();k}

ThePreparedStatementObjectPreparedStatementpstmt=null;tn/{StringSQL="UPDATEt_studentSETage二?WHEREid=?”pstmt=cann.prepareStatement(SQL);catch(SQLExceptione){finally{pstmt.close();TheCallableStatementObjectCallableStatementcstmt=null;try{StringSQL="{callproceduneName(?/?)}ncstmt=conn.preparecall(SQL);catch(SQLExceptione){HR■finally{TheCallableStatementObject(cont.)ParameterDescriptionINAparameterwhosevalueisunknownwhentheSQLstatemsntiscreated.YoubindvaluestoINparameterswiththesetXKXf)methods.OUTAparameterwhose\/alueissuppliedbytheSQLstatementitreturns.YouretrievevaluesfromtheOUTparameterswiththegetXXXf)methods.INOUTAparameterthatprovidesbothinputandoutputvalues.YoubindvariableswiththesetXXX()methodsandretrievevalueswiththegetXXX()studentlD=102;stmt.se

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論