版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章物聯(lián)網(wǎng)中間件物聯(lián)網(wǎng)中間件基本概念5.1物聯(lián)網(wǎng)中間件關(guān)鍵技術(shù)5.2物聯(lián)網(wǎng)中間件編程實(shí)例5.3物聯(lián)網(wǎng)中間件基本概念第1頁(yè)5.1物聯(lián)網(wǎng)中間件基本概念
5.1.1物聯(lián)網(wǎng)中間件定義和分類(lèi)5.1.2物聯(lián)網(wǎng)中間件基本組成和特點(diǎn)
5.1.3物聯(lián)網(wǎng)中間件舉例物聯(lián)網(wǎng)中間件基本概念第2頁(yè)5.1.1物聯(lián)網(wǎng)中間件定義和分類(lèi)
1.中間件定義:獨(dú)立系統(tǒng)軟件或服務(wù)程序。應(yīng)用于客戶(hù)機(jī)、服務(wù)器操作系統(tǒng),管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通信。連接兩個(gè)獨(dú)立應(yīng)用程序或獨(dú)立系統(tǒng)軟件,使相連接系統(tǒng)即使含有不一樣接口,利用中間件依然能相互交換信息。執(zhí)行關(guān)鍵路徑是信息傳遞。物聯(lián)網(wǎng)中間件基本概念第3頁(yè)2.中間件示意圖物聯(lián)網(wǎng)中間件基本概念第4頁(yè)3.中間件發(fā)展史最早含有中間件技術(shù)思想及功效軟件是IBMCICS,而CICS不是分布式環(huán)境產(chǎn)物,所以人們普通把Tuxedo作為第一個(gè)嚴(yán)格意義上中間件產(chǎn)品。
物聯(lián)網(wǎng)中間件基本概念第5頁(yè)3.中間件發(fā)展史 Tuxedo是1984年在當(dāng)初屬于AT&T貝爾試驗(yàn)室開(kāi)發(fā)完成,因?yàn)榉植际教幚懋?dāng)初并沒(méi)有在商業(yè)應(yīng)用上取得像今天一樣成功,Tuxedo在很長(zhǎng)一段時(shí)期里只是試驗(yàn)室產(chǎn)品,以后被Novell收購(gòu),在經(jīng)過(guò)Novell并不成功商業(yè)推廣之后,1995年被現(xiàn)在BEA企業(yè)收購(gòu)。物聯(lián)網(wǎng)中間件基本概念第6頁(yè)3.中間件發(fā)展史 BEA企業(yè)1995年收購(gòu)Tuxedo才成為一個(gè)真正中間件廠商。IBM中間件MQSeries也是20世紀(jì)90年代產(chǎn)品,其它許多中間件產(chǎn)品也都是最近幾年才成熟起來(lái)。物聯(lián)網(wǎng)中間件基本概念第7頁(yè)4.中間件主要特點(diǎn)滿(mǎn)足大量應(yīng)用需要運(yùn)行于各種硬件和OS平臺(tái)支持分布計(jì)算,提供跨網(wǎng)絡(luò)、硬件和OS平臺(tái)透明應(yīng)用或服務(wù)交互支持標(biāo)準(zhǔn)協(xié)議支持標(biāo)準(zhǔn)接口物聯(lián)網(wǎng)中間件基本概念第8頁(yè)5.什么是物聯(lián)網(wǎng)中間件 在物聯(lián)網(wǎng)中采取中間件技術(shù),以實(shí)現(xiàn)多個(gè)系統(tǒng)和各種技術(shù)之間資源共享,最終組成一個(gè)資源豐富、功效強(qiáng)大服務(wù)系統(tǒng)。物聯(lián)網(wǎng)中間件基本概念第9頁(yè)6.物聯(lián)網(wǎng)中間件分類(lèi) 基于目標(biāo)和實(shí)現(xiàn)機(jī)制不一樣,業(yè)內(nèi)將中間件分為以下幾類(lèi):遠(yuǎn)程過(guò)程調(diào)用中間件(RemoteProcedureCall)面向消息中間件(Message-OrientedMiddleware)對(duì)象請(qǐng)求代理中間件(ObjectRequestBrokers)物聯(lián)網(wǎng)中間件基本概念第10頁(yè)
幾類(lèi)中間件可向上提供不一樣形式通信服務(wù),在這些基本通信平臺(tái)之上,可構(gòu)筑各種框架,為應(yīng)用程序提供不一樣領(lǐng)域內(nèi)服務(wù),如事務(wù)處理監(jiān)控器、分布數(shù)據(jù)訪問(wèn)、對(duì)象事務(wù)管理器等。物聯(lián)網(wǎng)中間件基本概念第11頁(yè)7.物聯(lián)網(wǎng)中間件發(fā)展三個(gè)階段應(yīng)用程序中間件階段(ApplicationMiddleware)
架構(gòu)中間件階段(InfrastructureMiddleware)
處理方案中間件階段(SolutionMiddleware)。物聯(lián)網(wǎng)中間件基本概念第12頁(yè)
當(dāng)前,物聯(lián)網(wǎng)中間件最主要代表是RFID中間件,其它還有嵌入式中間件、數(shù)字電視中間件、通用中間件、M2M物聯(lián)網(wǎng)中間件等。下面,重點(diǎn)介紹一下RFID中間件。物聯(lián)網(wǎng)中間件基本概念第13頁(yè)
RFID中間件飾演RFID標(biāo)簽和應(yīng)用程序之間中介角色,從應(yīng)用程序端使用中間件所提供一組通用應(yīng)用程序接口(API),即能連到RFID讀寫(xiě)器,讀取RFID標(biāo)簽數(shù)據(jù)。物聯(lián)網(wǎng)中間件基本概念第14頁(yè) 這么一來(lái),即使存放RFID標(biāo)簽數(shù)據(jù)數(shù)據(jù)庫(kù)軟件或后端應(yīng)用程序增加或改由其它軟件取代,或者讀寫(xiě)RFID讀寫(xiě)器種類(lèi)增加等情況發(fā)生時(shí),應(yīng)用端不需修改也能處理,省去多對(duì)多連接維護(hù)復(fù)雜性問(wèn)題。物聯(lián)網(wǎng)中間件基本概念第15頁(yè)8.RFID中間件三大類(lèi)發(fā)展階段(1)應(yīng)用程序中間件發(fā)展階段(2)基礎(chǔ)架構(gòu)中間件發(fā)展階段(3)處理方案中間件(SolutionMiddleware)發(fā)展階段。物聯(lián)網(wǎng)中間件基本概念第16頁(yè)
5.1.2物聯(lián)網(wǎng)中間件基本組成和特點(diǎn)
基本組成:實(shí)現(xiàn)全球物品統(tǒng)一編碼,給物品打上電子標(biāo)簽。要實(shí)現(xiàn)每個(gè)小應(yīng)用環(huán)境或系統(tǒng)標(biāo)準(zhǔn)化以及它們之間通信,必須設(shè)置一個(gè)通用平臺(tái)和接口,也就是中間件。物聯(lián)網(wǎng)中間件基本概念第17頁(yè)以RFID為例,下列圖描述了中間件在系統(tǒng)中位置和作用。物聯(lián)網(wǎng)中間件基本概念第18頁(yè)物聯(lián)網(wǎng)特點(diǎn):(1)獨(dú)立于架構(gòu)。(2)數(shù)據(jù)流。(3)處理流。(4)標(biāo)準(zhǔn)化。物聯(lián)網(wǎng)中間件基本概念第19頁(yè)(1)ASPIRE特征:輕量級(jí)、可重新編程、智能、適合當(dāng)前標(biāo)準(zhǔn)、可升級(jí)、安全性高、完整。ASPIRE處理方法是完全開(kāi)源和免版權(quán)費(fèi)用,這大大降低了總開(kāi)發(fā)成本。5.1.3物聯(lián)網(wǎng)中間件舉例
物聯(lián)網(wǎng)中間件基本概念第20頁(yè)(2)Hydra定位于操作系統(tǒng)和應(yīng)用之間中間件層。中間件包含了眾多軟件組成部分,它們被設(shè)計(jì)用于處理各種任務(wù),以完成一個(gè)有效利用成本智能物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)過(guò)程。能夠在新和已經(jīng)存在分布式設(shè)備網(wǎng)絡(luò)上協(xié)作。5.1.3物聯(lián)網(wǎng)中間件舉例
物聯(lián)網(wǎng)中間件基本概念第21頁(yè)(2)Hydra它是基于語(yǔ)義模式驅(qū)動(dòng)架構(gòu)。Hydra中間件利于實(shí)現(xiàn)環(huán)境感知行為和處理在資源受限設(shè)備中處理數(shù)據(jù)持久性問(wèn)題。Hydra安全框架布署了一個(gè)規(guī)則框架。虛擬化結(jié)構(gòu)。5.1.3物聯(lián)網(wǎng)中間件舉例
物聯(lián)網(wǎng)中間件基本概念第22頁(yè)5.2物聯(lián)網(wǎng)中間件關(guān)鍵技術(shù)
5.2.1web服務(wù)5.2.2嵌入式中間件技術(shù)
5.2.3萬(wàn)維物聯(lián)網(wǎng)5.2.4上下文感知技術(shù)物聯(lián)網(wǎng)中間件基本概念第23頁(yè)Web服務(wù)(WebServices)就是一個(gè)能夠經(jīng)過(guò)Web描述、公布、定位和調(diào)用模塊化應(yīng)用。Web服務(wù)能夠執(zhí)行各種功效,從簡(jiǎn)單請(qǐng)求到復(fù)雜業(yè)務(wù)過(guò)程。一旦Web服務(wù)被布署,其它應(yīng)用程序或是Web服務(wù)就能夠發(fā)覺(jué)而且調(diào)用這個(gè)布署服務(wù)。5.2.1web服務(wù)
物聯(lián)網(wǎng)中間件基本概念第24頁(yè)
Web服務(wù)(WebServices)向外界提供一個(gè)能夠經(jīng)過(guò)Web進(jìn)行調(diào)用API(ApplicationProgrammingInterface,應(yīng)用程序編程接口),能夠用編程方法經(jīng)過(guò)Web來(lái)調(diào)用這個(gè)應(yīng)用程序。我們把調(diào)用這個(gè)WebServices應(yīng)用程序叫做客戶(hù)。物聯(lián)網(wǎng)中間件基本概念第25頁(yè)WebServices舉例:
創(chuàng)建一個(gè)WebServices,功效是返回當(dāng)前天氣情況。物聯(lián)網(wǎng)中間件基本概念第26頁(yè)WebServices定義:
建立可互操作分布式應(yīng)用程序平臺(tái)。WebServices平臺(tái)是一套標(biāo)準(zhǔn),它定義了應(yīng)用程序怎樣在Web上實(shí)現(xiàn)互操作性。WebServices為實(shí)現(xiàn)物聯(lián)網(wǎng)應(yīng)用與服務(wù)提供了一個(gè)基本框架。物聯(lián)網(wǎng)中間件基本概念第27頁(yè) WebServices經(jīng)過(guò)簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SimpleObjectAccessProtocol,SOAP)來(lái)調(diào)用。
SOAP是一個(gè)輕量級(jí)消息協(xié)議,它允許用任何語(yǔ)言編寫(xiě)任何類(lèi)型對(duì)象在任何平臺(tái)之上相互通信。
物聯(lián)網(wǎng)中間件基本概念第28頁(yè) SOA(Service-OrientedArchitecture,面向服務(wù)體系結(jié)構(gòu))是一個(gè)組件模型,它將應(yīng)用程序不一樣功效單元經(jīng)過(guò)這些服務(wù)之間定義接口和協(xié)議聯(lián)絡(luò)起來(lái)。物聯(lián)網(wǎng)中間件基本概念第29頁(yè) 接口是采取中立方式進(jìn)行定義,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這么系統(tǒng)中服務(wù)能夠用一個(gè)統(tǒng)一和通用方式進(jìn)行交互。這種含有中立接口定義特征稱(chēng)為服務(wù)之間松耦合。物聯(lián)網(wǎng)中間件基本概念第30頁(yè)松耦合系統(tǒng)優(yōu)勢(shì)主要有兩點(diǎn):一點(diǎn)是它含有很高靈活性另一點(diǎn)是當(dāng)組成整個(gè)應(yīng)用程序每個(gè)服務(wù)內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)逐步地發(fā)生改變時(shí),它能夠繼續(xù)存在物聯(lián)網(wǎng)中間件基本概念第31頁(yè) 嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),而且軟硬件可裁剪,適合用于應(yīng)用系統(tǒng)對(duì)功效、可靠性、成本、體積、功耗有嚴(yán)格要求專(zhuān)用計(jì)算機(jī)系統(tǒng)。5.2.2嵌入式中間技術(shù)服務(wù)
物聯(lián)網(wǎng)中間件基本概念第32頁(yè) 嵌入式中間件是在嵌入式應(yīng)用程序和操作系統(tǒng)、硬件平臺(tái)之間嵌入一個(gè)中間層,通常定義成一組較為完整、標(biāo)準(zhǔn)應(yīng)用程序接口。。物聯(lián)網(wǎng)中間件基本概念第33頁(yè)1.嵌入式Web嵌入式Web服務(wù)主要含有以下優(yōu)點(diǎn)。(1)統(tǒng)一客戶(hù)界面(2)平臺(tái)獨(dú)立性(3)高可擴(kuò)展性(4)并行性與分布性物聯(lián)網(wǎng)中間件基本概念第34頁(yè)1.嵌入式WebWeb服務(wù)器
對(duì)Web服務(wù)器而言,在物理設(shè)備上是指存放那些供客戶(hù)訪問(wèn)信息資源計(jì)算機(jī)或嵌入式系統(tǒng);在軟件上是指能夠按照客戶(hù)請(qǐng)求將信息資源傳送給客戶(hù)應(yīng)用程序。物聯(lián)網(wǎng)中間件基本概念第35頁(yè)1.嵌入式WebWeb客戶(hù)端 對(duì)Web客戶(hù)端而言,在物理設(shè)備上是指客戶(hù)所使用當(dāng)?shù)赜?jì)算機(jī)或者嵌入式設(shè)備;在軟件上是指能夠接收Web服務(wù)器上信息資源并展現(xiàn)給客戶(hù)應(yīng)用程序。物聯(lián)網(wǎng)中間件基本概念第36頁(yè) 嵌入式Web服務(wù)器技術(shù)關(guān)鍵是HTTP協(xié)議引擎。嵌入式Web服務(wù)器經(jīng)過(guò)CGI接口和數(shù)據(jù)動(dòng)態(tài)顯示技術(shù),能夠在HTML文件或表格中插入運(yùn)行代碼,供RAM讀取/寫(xiě)入數(shù)據(jù)。物聯(lián)網(wǎng)中間件基本概念第37頁(yè)經(jīng)典嵌入式Web服務(wù)器系統(tǒng)模型物聯(lián)網(wǎng)中間件基本概念第38頁(yè) CGI是通用網(wǎng)關(guān)接口(CommonGatewayInterface)縮寫(xiě)。它是Web服務(wù)器主機(jī)與外部擴(kuò)展應(yīng)用程序交互一個(gè)標(biāo)準(zhǔn)接口。
它提供了將參數(shù)傳遞給程序并將結(jié)果返回給瀏覽器一個(gè)機(jī)制。物聯(lián)網(wǎng)中間件基本概念第39頁(yè)CGI工作流程示意圖物聯(lián)網(wǎng)中間件基本概念第40頁(yè) CGI程序能夠經(jīng)過(guò)以下兩種調(diào)用方式來(lái)獲取客戶(hù)請(qǐng)求內(nèi)容: 一是經(jīng)過(guò)URL直接調(diào)用 二經(jīng)過(guò)交互式表單(Form)來(lái)調(diào)用。物聯(lián)網(wǎng)中間件基本概念第41頁(yè)1.JAVAVM 除了利用Web實(shí)現(xiàn)中間件外,JavaVM(Java虛擬機(jī))以其良好跨平臺(tái)特征成為了物聯(lián)網(wǎng)中間件主要平臺(tái)。物聯(lián)網(wǎng)中間件基本概念第42頁(yè)Java編譯執(zhí)行流程圖物聯(lián)網(wǎng)中間件基本概念第43頁(yè) 每個(gè)Java
VM都有兩種機(jī)制,一個(gè)是裝載含有適當(dāng)名稱(chēng)類(lèi)(類(lèi)或是接口),叫做類(lèi)裝載子系統(tǒng);另一個(gè)是負(fù)責(zé)執(zhí)行包含在已裝載類(lèi)或接口中指令,叫做運(yùn)行引擎。物聯(lián)網(wǎng)中間件基本概念第44頁(yè) 每個(gè)Java
VM又包含方法區(qū)、Java堆、Java棧、程序計(jì)數(shù)器和當(dāng)?shù)胤椒_@5個(gè)部分,這幾個(gè)部分和類(lèi)裝載機(jī)制與運(yùn)行引擎機(jī)制一起組成JavaVM體系結(jié)構(gòu)。物聯(lián)網(wǎng)中間件基本概念第45頁(yè)JavaVM體系結(jié)構(gòu)圖物聯(lián)網(wǎng)中間件基本概念第46頁(yè) 近幾年來(lái)伴隨物聯(lián)網(wǎng)興起,越來(lái)越多研究正在考慮將Web技術(shù)與物聯(lián)網(wǎng)技術(shù)相結(jié)合。 基于這么思想就產(chǎn)生了萬(wàn)維物聯(lián)網(wǎng)(WebofThings)概念。5.2.3萬(wàn)維物聯(lián)網(wǎng)
物聯(lián)網(wǎng)中間件基本概念第47頁(yè)WebofThings含有以下特征:(1)使用HTTP作為應(yīng)用協(xié)議,HTTP不但是用來(lái)連接傳感器和網(wǎng)絡(luò)傳輸協(xié)議。(2)經(jīng)過(guò)REST接口(或RESTAPI)將智能設(shè)備同時(shí)功效開(kāi)放出來(lái)。物聯(lián)網(wǎng)中間件基本概念第48頁(yè)(3)智能設(shè)備異步功效開(kāi)放采取廣為接收Web聚合標(biāo)準(zhǔn)。(4)前端利用Web展現(xiàn)方式,提供直觀、友好用戶(hù)體驗(yàn)。(5)開(kāi)放平臺(tái)。物聯(lián)網(wǎng)中間件基本概念第49頁(yè) 經(jīng)過(guò)WebofThings,可認(rèn)為物聯(lián)網(wǎng)應(yīng)用帶來(lái)了眾多便利,以以下舉其幾點(diǎn)優(yōu)勢(shì):降低智能設(shè)備安裝、整合、執(zhí)行和維護(hù)開(kāi)銷(xiāo);加緊智能設(shè)備安裝和移除速度;對(duì)智能設(shè)備可進(jìn)行移動(dòng)和臨時(shí)安裝;任何時(shí)刻、任何地點(diǎn)都可以提供實(shí)時(shí)信息服務(wù);增強(qiáng)可視化、可預(yù)見(jiàn)、可預(yù)報(bào)和維護(hù)日程能力;確保各類(lèi)應(yīng)用有效和高效率執(zhí)行。物聯(lián)網(wǎng)中間件基本概念第50頁(yè)WebofThings基本框架由以下3部分組成:(1)網(wǎng)絡(luò)節(jié)點(diǎn)集成接口(IntegrationInterfaceofNetworkNode)(2)基于REST格調(diào)終端節(jié)點(diǎn)(TerminalNodesBasedonRESTStyle)對(duì)智能設(shè)備可進(jìn)行移動(dòng)和暫時(shí)安裝;(3)網(wǎng)絡(luò)Mashup功效(WebMashupFunction)增強(qiáng)可視化、可預(yù)見(jiàn)、可預(yù)報(bào)和維護(hù)日程能力;物聯(lián)網(wǎng)中間件基本概念第51頁(yè)基于REST格調(diào)WebofThings架構(gòu)物聯(lián)網(wǎng)中間件基本概念第52頁(yè) 上下文感知技術(shù)是用來(lái)描述一個(gè)信息空間和物理空間相融合主要支撐技術(shù),它能夠使用戶(hù)可用計(jì)算環(huán)境和軟件資源動(dòng)態(tài)地適應(yīng)相關(guān)歷史狀態(tài)信息,從而依據(jù)環(huán)境改變自動(dòng)地采取符適用戶(hù)需要或者設(shè)定行動(dòng)。5.2.4上下文感知技術(shù)
物聯(lián)網(wǎng)中間件基本概念第53頁(yè) 上下文感知系統(tǒng)首先必須知道整個(gè)物理環(huán)境、計(jì)算環(huán)境、用戶(hù)狀態(tài)等方面靜態(tài)和動(dòng)態(tài)信息,即上下文(context)。 上下文能力獲取依賴(lài)于上下文感知技術(shù),主要包含上下文采集、建模、推理及融合等。上下文感知技術(shù)是實(shí)現(xiàn)服務(wù)自發(fā)性和無(wú)縫移動(dòng)性關(guān)鍵。物聯(lián)網(wǎng)中間件基本概念第54頁(yè)(1)上下文采集 上下文應(yīng)用領(lǐng)域不一樣,上下文采集方法也有所不一樣。通常情況下,有3種方法:傳感類(lèi)上下文、派生出上下文(依據(jù)信息統(tǒng)計(jì)和用戶(hù)設(shè)定)、明確提供上下文。 采集技術(shù)屬于物聯(lián)網(wǎng)感知層技術(shù)。物聯(lián)網(wǎng)中間件基本概念第55頁(yè)(2)上下文建模 要正確地利用上下文信息,必須對(duì)取得上下文信息進(jìn)行建模。上下文信息模型反應(yīng)了設(shè)計(jì)者對(duì)上下文了解,決定了使用什么方法把物理世界里面一些無(wú)意義和無(wú)規(guī)律數(shù)據(jù)轉(zhuǎn)化成計(jì)算世界里邏輯結(jié)構(gòu)語(yǔ)言,為實(shí)現(xiàn)上下文正確運(yùn)行打下基礎(chǔ)。物聯(lián)網(wǎng)中間件基本概念第56頁(yè)(3)上下文推理 系統(tǒng)中全部上下文信息組成上下文知識(shí)庫(kù),基于這些知識(shí)庫(kù),能夠進(jìn)行上下文推理。 實(shí)現(xiàn)推理普通有兩種方式,一是將邏輯規(guī)則用程序編碼實(shí)現(xiàn),二是采取基于規(guī)則推理系統(tǒng)。物聯(lián)網(wǎng)中間件基本概念第57頁(yè)(4)上下文融合 在上下文感知計(jì)算中,要取得連續(xù)上下文處理方法,必須聯(lián)合相關(guān)上下文服務(wù)從而聚集上下文信息,稱(chēng)為上下文融合。 這種上下文融合類(lèi)似于當(dāng)前已被廣泛應(yīng)用傳感器融合,其關(guān)鍵在于處理不一樣上下文服務(wù)邊界之間無(wú)縫融合。物聯(lián)網(wǎng)中間件基本概念第58頁(yè)5.3物聯(lián)網(wǎng)中間件編程實(shí)例5.3.1利用RubyonRails開(kāi)發(fā)基于 REST格調(diào)中間件5.3.2用J2EE開(kāi)發(fā)WebService中間件物聯(lián)網(wǎng)中間件基本概念第59頁(yè)5.3.1利用RubyonRails開(kāi)發(fā)基于REST格調(diào)中間件RubyonRails,簡(jiǎn)稱(chēng)RoR或Rails,是一個(gè)使用Ruby語(yǔ)言寫(xiě)開(kāi)源網(wǎng)絡(luò)應(yīng)用框架,能使開(kāi)發(fā)變得愈加輕易,當(dāng)前我們用其致力于Web應(yīng)用開(kāi)發(fā)、布署和維護(hù)。物聯(lián)網(wǎng)中間件基本概念第60頁(yè)
像其它Web框架一樣,Rails采取MVC開(kāi)發(fā)框架。但相比于其它框架,Rails愈加簡(jiǎn)單易用。這是因?yàn)椋?、Ruby語(yǔ)言特征:自然、介紹、快速,有豐富類(lèi)庫(kù),而且全方面地支持面向?qū)ο蟪绦蛟O(shè)計(jì)。物聯(lián)網(wǎng)中間件基本概念第61頁(yè)2、Rails基本設(shè)計(jì)標(biāo)準(zhǔn):“不要重復(fù)你自己”(Don’tRepeatYourself,簡(jiǎn)稱(chēng)DRY)以及“通例重于配置”。
物聯(lián)網(wǎng)中間件基本概念第62頁(yè)Rails是一個(gè)靈敏框架,它強(qiáng)調(diào)與客戶(hù)交互,隨時(shí)準(zhǔn)備“響應(yīng)改變”。 Rails提倡測(cè)試驅(qū)動(dòng)開(kāi)發(fā),全部Rails應(yīng)用內(nèi)嵌對(duì)于測(cè)試支持。物聯(lián)網(wǎng)中間件基本概念第63頁(yè)1.
RubyonRails開(kāi)發(fā)環(huán)境搭建RubyonRails能夠運(yùn)行在各種操作系統(tǒng)下,其平臺(tái)是獨(dú)立??倎?lái)說(shuō),要安裝運(yùn)行一個(gè)Rails應(yīng)用需要以下組件。物聯(lián)網(wǎng)中間件基本概念第64頁(yè)
(1)Ruby解釋器:我們?cè)诖耸褂肦uby-1.8.6。這個(gè)版本解析器能夠很好滿(mǎn)足Rails以及后續(xù)一些RubyGems要求。物聯(lián)網(wǎng)中間件基本概念第65頁(yè)
(2)RubyGems:它是一個(gè)標(biāo)準(zhǔn)Ruby程序包管理器,能夠很方便在線(xiàn)安裝各種Ruby程序包,包含Rails等。物聯(lián)網(wǎng)中間件基本概念第66頁(yè)
(3)RubyonRails框架:為簡(jiǎn)單起見(jiàn),我們采取gem自動(dòng)進(jìn)行安裝,在撰寫(xiě)本書(shū)時(shí)Rails最新版本為2.3.8。物聯(lián)網(wǎng)中間件基本概念第67頁(yè)(4)數(shù)據(jù)庫(kù):Rails最新版本默認(rèn)是采取SQLite3數(shù)據(jù)庫(kù),在此為了通用性考慮,我們采取最慣用MySQL數(shù)據(jù)庫(kù)。物聯(lián)網(wǎng)中間件基本概念第68頁(yè)
(5)一些必要庫(kù):采取MySQL數(shù)據(jù)庫(kù)只需要安裝mysqlgem包即可。假如使用Rails默認(rèn)數(shù)據(jù)庫(kù)則需安裝sqlite3-rubygem包。物聯(lián)網(wǎng)中間件基本概念第69頁(yè)
下面我們主要介紹在Windows下安裝布署Rails詳細(xì)過(guò)程。因?yàn)楹芏喑绦蜥槍?duì)Windows平臺(tái)都有很方便一鍵式安裝,所以在Windows下安裝Rails還是很輕松。物聯(lián)網(wǎng)中間件基本概念第70頁(yè)
(1)安裝Ruby解釋器。能夠從Ruby官網(wǎng)(/en/downloads/)上下載Ruby-1.8.6One-Click安裝包。
為了檢驗(yàn)是否安裝成功,能夠從Windows開(kāi)始菜單點(diǎn)擊“運(yùn)行”,輸入“cmd”,開(kāi)啟Windows命令提醒符,然后輸入“ruby–v”(回車(chē)),如能正確顯示Ruby程序版本號(hào)則證實(shí)安裝成功。物聯(lián)網(wǎng)中間件基本概念第71頁(yè)
(2)安裝RubyGems。能夠從RubyForge(/)或是RubyGems官網(wǎng)(/)上下載最新安裝包。下載完成后將該壓縮包進(jìn)行解壓,我們假設(shè)解壓后根目錄為${dir}目錄;然后開(kāi)啟命令提醒符,并切換到${dir}中,然后輸入rubysetup.rb運(yùn)行RubyGems安裝程序。為了驗(yàn)證是否安裝成功,能夠從Windows命令提醒符中輸入“gem–v”(回車(chē));如能正確顯示RubyGems版本號(hào)則安裝成功。物聯(lián)網(wǎng)中間件基本概念第72頁(yè)(3)安裝RubyonRails。在命令提醒符中輸入“geminstallrails”(回車(chē)),然后將會(huì)在線(xiàn)安裝Rails程序以及Rails一些依賴(lài)包。安裝完成后能夠經(jīng)過(guò)“rails–v”命令查看Rails版本號(hào)來(lái)驗(yàn)證是否安裝成功。物聯(lián)網(wǎng)中間件基本概念第73頁(yè)(4)MySQL數(shù)據(jù)庫(kù)。在MySQL官網(wǎng)上下載最新MySQL-5.1版本安裝程序,然后進(jìn)行安裝即可。詳細(xì)安裝過(guò)程也可參考官方安裝說(shuō)明(/doc/refman/5.1/
zh/installing.html)。物聯(lián)網(wǎng)中間件基本概念第74頁(yè)(5)安裝mysqlgem包。在命令提醒符中輸入“geminstallmysql”進(jìn)行在線(xiàn)安裝。物聯(lián)網(wǎng)中間件基本概念第75頁(yè)
至此Rails安裝過(guò)程就已經(jīng)全部完成。在Linux下安裝也大同小異,主要是安裝Ruby和mysql時(shí)略有不一樣,其它安裝步驟都和Windows下安裝相同。物聯(lián)網(wǎng)中間件基本概念第76頁(yè)2.RubyonRails編程實(shí)例下面章節(jié)將簡(jiǎn)單介紹一個(gè)關(guān)于溫度Rails物聯(lián)網(wǎng)中間件實(shí)例。Rails是一個(gè)網(wǎng)絡(luò)應(yīng)用框架,它能夠很方便地處理各種應(yīng)用請(qǐng)求,客戶(hù)端和Rails服務(wù)器之間采取統(tǒng)一REST接口,它們經(jīng)過(guò)HTTP協(xié)議來(lái)向服務(wù)器端發(fā)送請(qǐng)求。物聯(lián)網(wǎng)中間件基本概念第77頁(yè)
※本示例系統(tǒng)整體架構(gòu)圖如圖5-8所表示。在該示例中溫度傳感器也認(rèn)為是Rails服務(wù)器一個(gè)客戶(hù)端,它會(huì)實(shí)時(shí)地向服務(wù)器端發(fā)送數(shù)據(jù),服務(wù)器會(huì)把這些數(shù)據(jù)處理后保留到數(shù)據(jù)庫(kù)中以供瀏覽器或其它客戶(hù)端調(diào)用。服務(wù)器另一個(gè)客戶(hù)端是瀏覽器或是手機(jī)Widget應(yīng)用,這些客戶(hù)能夠向服務(wù)器端發(fā)送請(qǐng)求來(lái)獲取自己所關(guān)心數(shù)據(jù)。物聯(lián)網(wǎng)中間件基本概念第78頁(yè)
※
本示例中采取REST方式來(lái)進(jìn)行服務(wù)器端設(shè)計(jì),我們將溫度(temperature)看做一個(gè)資源,每個(gè)資源有對(duì)應(yīng)id、溫度值、更新時(shí)間、設(shè)備名稱(chēng)等信息。本示例中對(duì)于溫度資源操作只包含Put和Get兩種操作,這兩種操作分別經(jīng)過(guò)HTTPPost和Get請(qǐng)求來(lái)完成。詳細(xì)為溫度傳感器經(jīng)過(guò)Post請(qǐng)求向服務(wù)器上傳溫度數(shù)據(jù),而瀏覽器經(jīng)過(guò)Get請(qǐng)求來(lái)從服務(wù)器取得溫度數(shù)據(jù)統(tǒng)計(jì)。物聯(lián)網(wǎng)中間件基本概念第79頁(yè)
對(duì)于REST中其它資源操作如Update、Destroy等操作在本示例中能夠不需要,所以進(jìn)行了省略。RubyonRails是支持全部REST操作,能夠經(jīng)過(guò)scaffold來(lái)進(jìn)行實(shí)現(xiàn)。假定對(duì)于這種資源Put操作對(duì)應(yīng)HTTPPost請(qǐng)求,請(qǐng)求URL為{root_
dir}/temperature/post_temperature;獲取資源Get操作對(duì)應(yīng)HTTPGet請(qǐng)求,請(qǐng)求URL為{root_dir}/temperature/index。物聯(lián)網(wǎng)中間件基本概念第80頁(yè)
※
在此示例中采取mysql數(shù)據(jù)庫(kù),其實(shí)因?yàn)镽ails對(duì)于不一樣數(shù)據(jù)庫(kù)接口有很好封裝和適配,采取不一樣數(shù)據(jù)庫(kù)不會(huì)對(duì)代碼產(chǎn)生太大影響。針對(duì)該示例,數(shù)據(jù)庫(kù)中只建立一張表來(lái)進(jìn)行數(shù)據(jù)存放。表結(jié)構(gòu)如表5-1所表示,其中id字段用于標(biāo)識(shí)每條統(tǒng)計(jì),value字段統(tǒng)計(jì)溫度值,time字段統(tǒng)計(jì)上傳時(shí)間,device_id字段統(tǒng)計(jì)上傳數(shù)據(jù)設(shè)備標(biāo)識(shí)。物聯(lián)網(wǎng)中間件基本概念第81頁(yè)圖5-8溫度傳感中間件系統(tǒng)架構(gòu)示意圖表5-1溫度表結(jié)構(gòu)idvaluetimedevice_id物聯(lián)網(wǎng)中間件基本概念第82頁(yè)(1)建立工程。
建立一個(gè)名稱(chēng)為smart_sensor工程,首先在命令提醒符中進(jìn)入待建工程目錄,在此使用F:\example目錄,然后輸入rails--database=mysqlsmart_sensor,如圖5-9所表示。圖5-9建立smart_sensor工程本示例實(shí)現(xiàn)步驟包含以下幾步:物聯(lián)網(wǎng)中間件基本概念第83頁(yè)
此時(shí)修改smart_sensor\config\database.yml文件,在這個(gè)文件中會(huì)有3個(gè)數(shù)據(jù)庫(kù)配置選項(xiàng),分別為development、test、production,在此只修改development選項(xiàng)即可,修改成以下格式。 development: adapter:mysql encoding:utf8 reconnect:false database:smart_sensor_development pool:5 username:root password:mysql host:localhost(2)建立數(shù)據(jù)庫(kù)。物聯(lián)網(wǎng)中間件基本概念第84頁(yè)
需要修改主要是username和password,修改成mysql數(shù)據(jù)庫(kù)用戶(hù)名和密碼即可。然后在命令行根目錄smart_sensor下執(zhí)行rakedb:create來(lái)建立數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名稱(chēng)默認(rèn)為smart_sensor_development,如圖5-10所表示。下面命令如沒(méi)有尤其說(shuō)明均是在smart_sensor根目錄下執(zhí)行。圖5-10建立數(shù)據(jù)庫(kù)物聯(lián)網(wǎng)中間件基本概念第85頁(yè)
下面需要建立基本數(shù)據(jù)表,在Rails中數(shù)據(jù)表是由一個(gè)Model來(lái)管理,能夠用Rails命令來(lái)建立基本Model。在根目錄下輸入rubyscript\generatemodeltemperature,如圖5-11所表示。圖5-11建立基本Model(3)建立基本Model類(lèi)。物聯(lián)網(wǎng)中間件基本概念第86頁(yè)此時(shí)在db\migrate目錄下會(huì)生成一個(gè)xxx_create_temperatures.rb文件,打開(kāi)該文件并修改成以下結(jié)果。這里主要是設(shè)置數(shù)據(jù)表各個(gè)字段類(lèi)型以及其它細(xì)節(jié)。物聯(lián)網(wǎng)中間件基本概念第87頁(yè)classCreateTemperatures<ActiveRecord::Migrationdefself.upcreate_table:temperaturesdo|t|
#establishthedatatablet.decimal:value,:precision=>4,:scale=>1t.datetime:timeeger:device_idt.timestampsendenddefself.downdrop_table:temperaturesendend
然后執(zhí)行rakedb:migrate命令將temperatures表結(jié)構(gòu)寫(xiě)入數(shù)據(jù)庫(kù)。物聯(lián)網(wǎng)中間件基本概念第88頁(yè)
控制器功效主要是對(duì)外部請(qǐng)求進(jìn)行處理并返回對(duì)應(yīng)結(jié)果。此處能夠經(jīng)過(guò)Rails基本命令來(lái)建立基本控制器。在根目錄下輸入命令rubyscript\generatecontrollertemperatureindex,如圖5-12所表示。圖5-12生成基本控制器(4)建立temperature控制器。物聯(lián)網(wǎng)中間件基本概念第89頁(yè)
classTemperatureController<ApplicationController#listallthetemperaturesinthedatabasedefindex@temperatures=Temperature.allrespond_todo|format|format.html#index.html.erbformat.xml{render:xml=>@temperatures}endend
然后修改app\controllers\temperature_controller.rb文件以真正實(shí)現(xiàn)該示例需要方法。在此我們將實(shí)現(xiàn)index方法以輸出全部temperature數(shù)據(jù),而且增加一個(gè)添加數(shù)據(jù)方法以把傳感器發(fā)來(lái)數(shù)據(jù)存入數(shù)據(jù)庫(kù),詳細(xì)修改以下。物聯(lián)網(wǎng)中間件基本概念第90頁(yè)
#processthepostrequestandstorethedatainthedatabasedefpost_temperaturebegin#constructaninstanceofTemperaturea_temperature=Temperature.new(:value=>params[:value],:time=>params[:time],:device_id=>params[:device_id])#storea_temperatureinthedatabasea_temperature.saverescue#returnFailiffailsstorethedatarender:text=>"Fail"returnend#returnOKifallsuccessrender:text=>"OK"returnendend物聯(lián)網(wǎng)中間件基本概念第91頁(yè)這里增加了兩個(gè)方法,index和post_temperature。其中index方法用于輸出當(dāng)前存入數(shù)據(jù)庫(kù)全部溫度統(tǒng)計(jì),post_temperature方法是用來(lái)處理傳感器發(fā)來(lái)提交數(shù)據(jù)請(qǐng)求,并把這些溫度數(shù)據(jù)存入數(shù)據(jù)庫(kù),執(zhí)行成功則返回“OK”,不然返回“Fail”。物聯(lián)網(wǎng)中間件基本概念第92頁(yè)
在此因?yàn)閕ndex方法會(huì)返回一個(gè)html文件,來(lái)控制返回結(jié)果顯示。在Rails中會(huì)在views目錄下對(duì)返回頁(yè)面文件進(jìn)行集中管理。在此需要修改app\views\
temperature\index.html.erb文件,修改結(jié)果以下。(5)修改view頁(yè)面。物聯(lián)網(wǎng)中間件基本概念第93頁(yè)<divid="temperature-list"><h1>Listingtemperatures</h1><table><%fortemperaturein@temperatures%><tr><td> <%=temperature.id%></td><td> <%=temperature.value%></td><td> <%=temperature.time%></td><td> <%=temperature.device_id%></td></tr><%end%></table></div>物聯(lián)網(wǎng)中間件基本概念第94頁(yè)
為了讓Rails當(dāng)收到某個(gè)請(qǐng)求時(shí)知道該調(diào)用哪個(gè)控制器下哪個(gè)方法來(lái)進(jìn)行處理,在此需要修改Rails路由以符合該示例要求。在Rails中修改路由也十分簡(jiǎn)單,只需要修改config\routes.rb文件即可。在該文件最終已經(jīng)有兩條默認(rèn)路由格式,需要修改這些路由規(guī)則以符合我們需要,詳細(xì)以下。
map.connect'temperature/post_temperature',:controller=>"temperature",
:action=>"post_temperature",:conditions=>{:method=>:post} map.connect':controller/:action' map.connect':controller/:action.:format’(6)修改路由。物聯(lián)網(wǎng)中間件基本概念第95頁(yè)
①當(dāng)收到發(fā)往temperature/post_temperature這個(gè)路徑Post請(qǐng)求時(shí)調(diào)用temperature控制器post_temperature方法來(lái)進(jìn)行處理。
②當(dāng)收到:controller/:action格式路由時(shí),則將第一個(gè)參數(shù)作為controller,第二個(gè)作為action。比如發(fā)送temperature/index,此時(shí)則會(huì)采取temperature控制器index方法來(lái)進(jìn)行處理。這里解釋一下這3條路由分別含義。物聯(lián)網(wǎng)中間件基本概念第96頁(yè)
③前面與(2)相同,另外增加了:format參數(shù)用來(lái)控制返回格式,比如發(fā)送temperature/index.html則采取temperature控制器index方法,采取html格式返回結(jié)果。假如發(fā)送temperature/index.xml則以xml格式返回結(jié)果。路由匹配規(guī)則是從上向下依次進(jìn)行匹配,假如碰到匹配規(guī)則,則采取該規(guī)則,而且停頓向下匹配。
物聯(lián)網(wǎng)中間件基本概念第97頁(yè)
在此我們采取外部客戶(hù)主動(dòng)POST數(shù)據(jù)方式來(lái)向Server發(fā)送請(qǐng)求。Rails中為了防止惡意POST數(shù)據(jù),采取了認(rèn)證授權(quán)機(jī)制來(lái)預(yù)防這種攻擊,類(lèi)似我們現(xiàn)在采取POST方式進(jìn)行上傳數(shù)據(jù),則會(huì)引發(fā)RailsActionController::Invalid
AuthenticityToken異常,而且不會(huì)對(duì)我們POST操作進(jìn)行處理。我們?cè)诖诵枰迷撜J(rèn)證機(jī)制,方法也很簡(jiǎn)單,只要修改app\controllers\application_controller.rb文件即可,修改結(jié)果以下。(7)修改控制器認(rèn)證過(guò)濾器。物聯(lián)網(wǎng)中間件基本概念第98頁(yè)classApplicationController<ActionController::Basehelper:all#includeallhelpers,allthetimeprotect_from_forgery#SeeActionController::RequestForgeryProtectionfordetails
#allowuploadthedatadirectlyskip_before_filter:verify_authenticity_token
#Scrubsensitiveparametersfromyourlog#filter_parameter_logging:passwordend物聯(lián)網(wǎng)中間件基本概念第99頁(yè)
接下來(lái)我們對(duì)本實(shí)例功效進(jìn)行測(cè)試,包含兩部分:數(shù)據(jù)上傳和數(shù)據(jù)顯示。
①數(shù)據(jù)上傳。
我們采取Curl來(lái)發(fā)送HTTPPOST請(qǐng)求。Curl工具是Linux下默認(rèn)工具,現(xiàn)在也有Windows版,能夠直接在Curl官網(wǎng)進(jìn)行下載(http://curl.haxx.se/download.html),在此我們選取Win32-Generic禁用SSL版本。(8)功效測(cè)試。物聯(lián)網(wǎng)中間件基本概念第100頁(yè)
首先開(kāi)啟一個(gè)終端,在根目錄下輸入rubyscript/server,開(kāi)啟WEBrick服務(wù)器。然后在curl解壓目錄下輸入curl–d“value=25.8&time=-06-09%:30:21&device_id=T1101”
http://localhost:3000/temperature/post_temperature。然后能夠收到來(lái)自服務(wù)器端OK返回,如圖5-13所表示。同時(shí)也能夠查看服務(wù)器終端log來(lái)分析請(qǐng)求處理過(guò)程。圖5-13發(fā)送POST請(qǐng)求物聯(lián)網(wǎng)中間件基本概念第101頁(yè)
首先在根目錄下輸入rubysrcript/server來(lái)開(kāi)啟服務(wù)器(假如已經(jīng)開(kāi)啟服務(wù)器可跳過(guò)此步驟)。然后在瀏覽器地址欄輸入http://localhost:3000/temperature或http://localhost:3000/
temperature/index.html來(lái)顯示當(dāng)前數(shù)據(jù)庫(kù)中保留溫度數(shù)據(jù),如圖5-14所表示。
你也能夠采取XML格式來(lái)顯示這些數(shù)據(jù),只需要在瀏覽器地址欄輸入http://localhost:3000/
temperature/index.xml即可,如圖5-15所表示。②數(shù)據(jù)顯示。物聯(lián)網(wǎng)中間件基本概念第102頁(yè)圖5-14HTML顯示當(dāng)前數(shù)據(jù)庫(kù)中數(shù)據(jù)物聯(lián)網(wǎng)中間件基本概念第103頁(yè)圖5-15XML顯示當(dāng)前數(shù)據(jù)庫(kù)中數(shù)據(jù)物聯(lián)網(wǎng)中間件基本概念第104頁(yè)5.3.2用J2EE開(kāi)發(fā)WebService中間件J2EE(Java2PlatformEnterpriseEdition)是一套全然不一樣于傳統(tǒng)應(yīng)用開(kāi)發(fā)技術(shù)架構(gòu),包含很多組件,可簡(jiǎn)化和規(guī)范應(yīng)用系統(tǒng)開(kāi)發(fā)與布署,進(jìn)而提升可移植性、安全性與重復(fù)利用價(jià)值。物聯(lián)網(wǎng)中間件基本概念第105頁(yè)5.3.2用J2EE開(kāi)發(fā)WebService中間件 J2EE關(guān)鍵是一組技術(shù)規(guī)范與指南,其中所包含各類(lèi)組件、服務(wù)架構(gòu)及技術(shù)層次,都有相通標(biāo)準(zhǔn)與規(guī)格,讓各種依循J2EE架構(gòu)不一樣平臺(tái)之間存在良好兼容性,處理了過(guò)去企業(yè)后端使用信息產(chǎn)品彼此之間無(wú)法兼容,企業(yè)內(nèi)部或外部難以互通窘境。物聯(lián)網(wǎng)中間件基本概念第106頁(yè)
輕量級(jí)J2EE組件SSH(Struts、Spring
、Hibernate)是當(dāng)前J2EE快速開(kāi)發(fā)最正確組合。 Struts實(shí)現(xiàn)了MVC模式非常成熟Web應(yīng)用組件,廣泛應(yīng)用于各種Web應(yīng)用系統(tǒng)表現(xiàn)層中。Hibernate是成熟ORM組件,主要用于實(shí)現(xiàn)數(shù)據(jù)持久化功效,最大作用在于構(gòu)筑了面向?qū)ο驤ava語(yǔ)言與關(guān)系型數(shù)據(jù)庫(kù)之間橋梁,使得能夠直接經(jīng)過(guò)對(duì)Java對(duì)象持久化操作完成對(duì)數(shù)據(jù)持久化操作。物聯(lián)網(wǎng)中間件基本概念第107頁(yè) Spring則作為輕量級(jí)J2EE框架,其關(guān)鍵是一個(gè)功效強(qiáng)大IoC容器,在此容器基礎(chǔ)上又提供了對(duì)AOP支持,以及對(duì)持久層和表現(xiàn)層封裝實(shí)現(xiàn)。簡(jiǎn)而言之,Struts用來(lái)做控制,是MVC模式控制層;Hibernate用來(lái)做持久化,也是數(shù)據(jù)庫(kù)層,對(duì)數(shù)據(jù)庫(kù)進(jìn)行封裝;Spring用來(lái)整合J2EE各層之間中間層,提升了層與層之間松耦合,使得各層之間成為對(duì)立模塊。物聯(lián)網(wǎng)中間件基本概念第108頁(yè)1.J2EE開(kāi)發(fā)環(huán)境搭建J2EE快速開(kāi)發(fā)最正確組合SSH架構(gòu),其中以Struts為例,實(shí)現(xiàn)了J2EE開(kāi)發(fā)WebService案例。需要安裝和配置軟件,包含Tomcat、Struts及其插件等,詳細(xì)實(shí)現(xiàn)步驟以下。物聯(lián)網(wǎng)中間件基本概念第109頁(yè)Tomcat服務(wù)器現(xiàn)有最新版本6.0.29,可在/download-60.cgi官方網(wǎng)站下載。對(duì)于Windows操作系統(tǒng),能夠下載zip格式或者exe格式兩種格式文件。zip格式文件解壓即可使用,也能夠選擇其它格式文件,以6.0.18版本為例,如圖5-16所表示。(1)版本與下載地址。Tomcat安裝過(guò)程包含以下幾個(gè)步驟。物聯(lián)網(wǎng)中間件基本概念第110頁(yè)圖5-16Tomcat服務(wù)器下載界面物聯(lián)網(wǎng)中間件基本概念第111頁(yè)
安裝Tomcat后,在“我電腦”->“屬性”->“高級(jí)”->“環(huán)境變量”->“系統(tǒng)變量”中添加以下環(huán)境變量(假定Tomcat安裝在c:\tomcat)。(2)配置環(huán)境變量。CATALINA_HOME:c:\tomcatCATALINA_BASE:c:\tomcatTOMCAT_HOME:c:\tomcat
然后修改環(huán)境變量classpath,把Tomcat安裝目錄common\lib下servlet.jar加載到classpath中,修改后classpath以下所表示。 classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA
_HOME%\lib\servlet-api.jar物聯(lián)網(wǎng)中間件基本概念第112頁(yè)見(jiàn)到Tomcat歡迎頁(yè)面,則說(shuō)明安裝成功,可進(jìn)入下一步驟。(3)開(kāi)啟Tomcat,IE中訪問(wèn)http://localhost:8080。物聯(lián)網(wǎng)中間件基本概念第113頁(yè)Tomcat安裝目錄webapps,能夠見(jiàn)到ROOT、examples、tomcat-docs之類(lèi)Tomcat自帶文件目錄,并拷貝ROOT目錄下WEB-INF目錄。
在webapps目錄下新建一個(gè)目錄,命名myapp,并將上一步拷貝WEB-INF目錄粘貼到此目錄下。
在myapp下新建jsp測(cè)試頁(yè)面,文件名為index.jsp,文件內(nèi)容以下。(4)創(chuàng)建屬于自己jspapp目錄。物聯(lián)網(wǎng)中間件基本概念第114頁(yè)
重啟Tomcat。
打開(kāi)瀏覽器,輸入http://localhost:8080/myapp/index.jsp,假如頁(yè)面上顯示出當(dāng)前時(shí)間,則說(shuō)明安裝配置成功。 <html> <body> <center> Nowtimeis:<%=new java.util.Date()%> </center> </body> </html>物聯(lián)網(wǎng)中間件基本概念第115頁(yè)Struts安裝過(guò)程包含以下幾個(gè)步驟。①版本和下載網(wǎng)址Struts最新版本是2.0.12,官方網(wǎng)站下載地址/download.cgi#struts,下載struts-2.0.12-all.zip(91MB)即可,其它文件均包含在此文檔中。(5)測(cè)試Javabean。物聯(lián)網(wǎng)中間件基本概念第116頁(yè)
因?yàn)閟truts1.x和struts2有很大區(qū)分,而現(xiàn)今許多書(shū)都是針對(duì)struts1.x所寫(xiě)。在struts1.x版本中struts-config.xml是主要配置文件,而在struts2中,它變成了struts.xml,而且文件描述內(nèi)容和struts-config.xml也有所差異,所以須小心慎重。而且許多資料一開(kāi)始就直接用IDE環(huán)境(如MyEclipse)來(lái)展現(xiàn)Struts功效框架,使得我們?cè)诹私釹truts框架時(shí),也會(huì)有些疑惑。②安裝與配置物聯(lián)網(wǎng)中間件基本概念第117頁(yè)
因?yàn)門(mén)omcat服務(wù)器可用記事本等小型文本編輯器來(lái)實(shí)現(xiàn)jsp編寫(xiě),而假如讀者沒(méi)有集成完備、功效強(qiáng)大MyEclipseIDE,可能還需要下載和安裝,這么必定會(huì)讓人以為比較麻煩和費(fèi)時(shí)。實(shí)際上,只要搞清楚了Struts結(jié)構(gòu),完全能夠用記事原來(lái)實(shí)現(xiàn)Struts功效框架。
下面章節(jié)將以HelloInternet為例,來(lái)引領(lǐng)讀者進(jìn)入J2EE開(kāi)發(fā)WebService大門(mén),并在今后深入研究與開(kāi)發(fā)中,結(jié)合物聯(lián)網(wǎng)背景,開(kāi)發(fā)出更多功效豐富物聯(lián)網(wǎng)創(chuàng)新應(yīng)用。物聯(lián)網(wǎng)中間件基本概念第118頁(yè)2.J2EE編程實(shí)例用J2EE實(shí)現(xiàn)WebService實(shí)例時(shí),以Struts框架實(shí)現(xiàn)工程Struts2_HelloInternet為例,詳細(xì)實(shí)現(xiàn)過(guò)程及步驟以下。物聯(lián)網(wǎng)中間件基本概念第119頁(yè)(1)在webapps目錄下建立目錄Struts2_HelloInternet,完善目錄結(jié)構(gòu),如圖5-17所表示。圖5-17J2EE實(shí)例框架圖物聯(lián)網(wǎng)中間件基本概念第120頁(yè)(2)在Lib目錄中添加以下jar文件:commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.12.jar,xwork-2.0.6.jar。物聯(lián)網(wǎng)中間件基本概念第121頁(yè)(3)配置Web.xml文件,內(nèi)容以下。<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.4"
xmlns="/xml/ns/j2ee"
xmlns:xsi="http://XMLSchema-instance"
xsi:schemaLocation="/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd"><display-name>Struts2.0HelloInternet</display-name><!--配置web.xml文件,對(duì)標(biāo)簽filter、filter-mapping、welcome-file-list進(jìn)行相關(guān)配置--><filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>物聯(lián)網(wǎng)中間件基本概念第122頁(yè)(4)配置struts.xml文件,內(nèi)容以下。<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><!--配置struts.xml文件--><struts><includefile="struts-default.xml"/><packagename="tutorial"extends="struts-default">
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 社工培訓(xùn)心得體會(huì)
- 貓巨結(jié)腸日常護(hù)理方法
- 脾胃病的常態(tài)化護(hù)理
- DB11∕T 936.9-2020 節(jié)水評(píng)價(jià)規(guī)范 第9部分:洗車(chē)場(chǎng)所
- 六年級(jí)語(yǔ)文下冊(cè) 第五單元測(cè)試卷1(有答案)(部編版)
- 建筑垃圾處置方案
- 2025企業(yè)公司工作總結(jié)計(jì)劃匯報(bào)
- 大宗交易合同(2篇)
- 北師大五年級(jí)下冊(cè)數(shù)學(xué)-周測(cè)培優(yōu)卷5 分?jǐn)?shù)乘法的計(jì)算能力檢測(cè)卷
- 管線(xiàn)帶壓開(kāi)孔施工方案
- 環(huán)境保護(hù)教育培訓(xùn)(3篇模板)
- 幼兒園語(yǔ)言故事《阿里巴巴和四十大盜》課件
- 新外研版高中英語(yǔ)必修1單詞正序英漢互譯默寫(xiě)本
- 安全隱患規(guī)范依據(jù)查詢(xún)手冊(cè)22大類(lèi)12萬(wàn)字
- 重慶XX五星級(jí)酒店建設(shè)項(xiàng)目可行性研究報(bào)告
- 宿舍文藝直播策劃方案
- 《電子合同基礎(chǔ)信息描述規(guī)范》
- 陜西金拴塑業(yè)有限公司年產(chǎn)1萬(wàn)噸農(nóng)用薄膜及年產(chǎn)2萬(wàn)噸橡膠粉建設(shè)項(xiàng)目環(huán)境影響報(bào)告
- 某幼兒園食品貯存管理制度培訓(xùn)
- 機(jī)場(chǎng)能源管理與優(yōu)化
- 國(guó)家突發(fā)公共衛(wèi)生事件相關(guān)信息報(bào)告管理工作規(guī)范課件
評(píng)論
0/150
提交評(píng)論