




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ESB消息傳輸?shù)淖畹鸵笞鳛橄鬏斚到y(tǒng),一個(gè) ESB 的最少需求經(jīng)常被簡寫為 TRANS,定義了作為軟件實(shí)體的 ESB 提供的功能:-Transforms 轉(zhuǎn)換消息格式,針對(duì)已注冊(cè)的服務(wù)提供者的需求將消息從一種格式轉(zhuǎn)換到另一種格式。-Routes 路由消息,將消息傳輸?shù)揭炎?cè)的服務(wù),并保證傳輸?shù)姆?wù)質(zhì)量、服務(wù)層的特性。-Augments 擴(kuò)展信息,在傳輸?shù)膬?nèi)容中添加額外信息,比如關(guān)于消息請(qǐng)求者的元數(shù)據(jù)。在消息中添加新的通信協(xié)議內(nèi)容以滿足服務(wù)提供者的需求。-Notifies 通知消息監(jiān)聽者的特定消息請(qǐng)求-Secures 安全傳輸,對(duì)于傳輸?shù)南⒃黾酉⒄J(rèn)證、授權(quán)、不可否認(rèn)性、機(jī)密性等機(jī)制。JB
2、I(JavaBusinessIntegration,Java業(yè)務(wù)集成)介紹JBI 規(guī)范及 API 描述了構(gòu)建基于插件、基于服務(wù)設(shè)計(jì)的企業(yè)級(jí) ESB 系統(tǒng)的平臺(tái)。JBI 以 TRANS 需求為基礎(chǔ),基于組件交互和規(guī)范化消息(normalizedmessages)而設(shè)計(jì)。JBI 是一種規(guī)范及 API,提供了規(guī)范化消息服務(wù)、組件框架和管理模型,用以部署路由引擎、規(guī)則引擎、以及信息轉(zhuǎn)換等集成服務(wù)。基于 JBI 規(guī)范的設(shè)計(jì)使用特定的基于標(biāo)準(zhǔn)的可插拔架構(gòu),此架構(gòu)內(nèi)包含一基于 JVM 運(yùn)行時(shí)(runtime)的稱為規(guī)范化消息路由器(normalizedmessagerouter,NMR)的組件。JBI 架構(gòu)
3、的高層組件交互見圖 1圖 1JBI 系統(tǒng)高層架構(gòu)圖JBI 的消息模型基于 WSDL,可以很容易地映射到 Web 服務(wù),HTTP,電子郵件及 JMS 中。JBI 可以集成舊系統(tǒng)、字節(jié)傳輸、面向文檔的傳輸(document-orientedtransports)以及 RPC(RemoteProcedureCall,遠(yuǎn)程過程調(diào)用)等。圖 1 中的綁定組件(bindingcomponents)同面向傳輸協(xié)議的關(guān)聯(lián)方或關(guān)聯(lián)組件通信。圖 1 中的 JBIServiceMix企業(yè)服務(wù)總線(ESB)(一)服務(wù)引擎組件(serviceenginecomponents)提供基于內(nèi)容的路由、服務(wù)整合、規(guī)則引擎、信息
4、轉(zhuǎn)換、可定制的信息增強(qiáng)等服務(wù)。規(guī)范化消息JBI 系統(tǒng)使用規(guī)范化”消息。消息內(nèi)包含應(yīng)用信息荷載、可選的附件、以及用于請(qǐng)求應(yīng)答雙方交互的元數(shù)據(jù)。消息的規(guī)范化過程是將環(huán)境相關(guān)的信息映射為中立于環(huán)境的、抽象的、標(biāo)準(zhǔn)的格式,以便在 JBI中傳輸。所有由規(guī)范化消息路由 NMR 處理的消息都需規(guī)范化處理。規(guī)范化消息由如下的三個(gè)主要部分構(gòu)成:1 .消息內(nèi)容,亦即荷載,是符合 WSDL 消息格式的 XML 文檔,不包含針對(duì)傳輸協(xié)議或者信息格式的編碼。2 .消息屬性,或元數(shù)據(jù),是消息攜帶的額外信息,可以包含安全信息、事務(wù)上下文信息、組件特定信息等。消息屬性是消息上下文的第一部分。3 .消息附件,是由消息荷載引用的
5、,包含在一個(gè)可以解析處理附件內(nèi)容的信息處理器內(nèi)。附件可以是非 XML 信息。附件是消息上下文的第二部分。規(guī)范化消息路由JBI 系統(tǒng)內(nèi)消息交換依賴于規(guī)范化消息路由 NMR 在服務(wù)者和消費(fèi)者之間路由消息交換對(duì)象(messageexchangeobjects)。針對(duì)應(yīng)用的不同需求以及消息本身特性,NMR 提供不同服務(wù)質(zhì)量的消息傳輸服務(wù)。NMR 并不寄宿于任何一個(gè)具體的對(duì)象中,它被抽象成一套應(yīng)用程序接口、服務(wù)提供者接口、組件接口等。NMRAPI 包括:- -JBIMessageAPIJBI 消息接口- -JBIServiceAPIJBI 服務(wù)接口- -JBIMessageExchangeFactory
6、APIJBI 消息交換對(duì)象工廠接口- -ServiceDescriptionSPI 服務(wù)描述接口- -MessageExchangePatternsAPI 消息交換模式接口- -EndpointReferenceAPI 端點(diǎn)引用接口傳輸通道JBI 傳輸通道是雙向的通信管道,通過 NMR 傳輸消息以連接綁定組件和服務(wù)引擎。接口javax.jbi.messaging.DeliveryChannel 確定服務(wù)消費(fèi)者、服務(wù)提供者和 NMR 三者之間的接口合約關(guān)系。服務(wù)使用者通過其傳輸通道初始化服務(wù)調(diào)用請(qǐng)求;服務(wù)提供者通過其傳輸通道接受消費(fèi)者的調(diào)用請(qǐng)求。既是使用者又是提供者的組件使用相同的一條傳輸通道。
7、因此,接口 DeliveryChannel 的實(shí)現(xiàn)必須支持通道實(shí)例在多線程下的并發(fā)使用。JBI組件JBI 組件框架提供了可插入的接口,綁定組件和服務(wù)引擎可以通過此接口與 JBI 系統(tǒng)交互。組件框架提供了所有訪問 JBI 服務(wù)的接口。JBI 支持二種類型組件,服務(wù)引擎和綁定組件。組件可以通過以下二種方式與系統(tǒng)交互:1. SPIs:由綁定組件或服務(wù)引擎實(shí)現(xiàn)的接口。2. APIs:系統(tǒng)提供的,綁定組件或服務(wù)引擎可以訪問的接口服務(wù)引擎服務(wù)引擎是 JBI 系統(tǒng)內(nèi)的業(yè)務(wù)邏輯實(shí)現(xiàn)組件,可以作為服務(wù)提供者或使用者。服務(wù)引擎對(duì)服務(wù)使用和需求提供整合點(diǎn)。也可以提供諸如信息轉(zhuǎn)換、復(fù)雜的路由、以及協(xié)調(diào)信息等功能。綁定
8、組件綁定組件被用來在特定的協(xié)議和傳輸方式中發(fā)送和接收消息。通過綁定組件,JBI 系統(tǒng)與特定的傳輸協(xié)議解耦。這是通過綁定組件對(duì)消息進(jìn)行相應(yīng)的協(xié)議特定和協(xié)議無關(guān)的編組(marshalling)和解組(unmarshalling)而實(shí)現(xiàn)的,這樣 JBI 環(huán)境內(nèi)僅處理規(guī)范化的消息。規(guī)范化消息交換(Normalizedmessageexchange)JBI 首要用途是在組件間路由規(guī)范化消息。消息傳輸時(shí)處于規(guī)范化形式。綁定組件必須將特定于協(xié)議(傳輸層)的消息轉(zhuǎn)換為規(guī)范化形式。綁定組件和服務(wù)引擎通過傳輸通道與NMR 通信,傳輸通道提供消息的雙向傳輸機(jī)制。一個(gè) JBI 系統(tǒng)外服務(wù)使用者通過特定協(xié)議/傳輸層發(fā)送
9、服務(wù)請(qǐng)求到綁定組件。 綁定組件轉(zhuǎn)換請(qǐng)求消息為規(guī)范化消息,構(gòu)造一個(gè)稱為消息交換(messageexchange)的消息包,然后通過傳輸通道傳輸?shù)?NMR,再由 NMR 路由到服務(wù)提供者。當(dāng)所使用的服務(wù)引擎或綁定組件收到消息后,創(chuàng)建相應(yīng)的規(guī)范化消息,將此規(guī)范化消息填充到一個(gè)新的MessageExchange 實(shí)例中,并傳輸?shù)侥繕?biāo) ServiceEndPoint 實(shí)例處。服務(wù)端點(diǎn)獲得消息交換對(duì)象后,恢復(fù)規(guī)范化消息為協(xié)議/傳輸特定格式,然后將消息傳輸?shù)酵獠糠?wù)提供者。服務(wù)單元在已安裝的引擎或綁定組件中部署的特定于某組件的構(gòu)件,一般被稱為服務(wù)單元。服務(wù)單元被集成為一個(gè)部署文件,稱為服務(wù)組合。服務(wù)組合包含
10、一個(gè)部署描述符文件,指定組合中各服務(wù)單元的部署方式,如確定將某服務(wù)單元部署到那個(gè)組件。服務(wù)單元包含內(nèi)容如下:一元數(shù)據(jù):使用或者生成的服務(wù)的 JBI 描述符一生成物:一般是 XML 信息(可能是二進(jìn)制,或者目標(biāo)綁定組件或服務(wù)引擎需要的任何對(duì)象ServiceMix簡介ServiceMix 是基于 JBI 的 ESB。它是開源的基于 JBI 語義和 API 的 ESB 和 SOA 工具包,以 Apache 許可證方式發(fā)布。它是輕量的 ESB 實(shí)現(xiàn),易于作為嵌入式 ESB 使用;集成了對(duì) Spring 技術(shù)的支持;可以在客戶端或服務(wù)器端運(yùn)行;可以作為獨(dú)立的 ESB 提供者,也可以作為另外 ESB 的服
11、務(wù)組件;可以在 JavaSE 或 JavaEE 服務(wù)器中使用;ServiceMix 同 ApacheGeronimo 以及 JBoss 服務(wù)器完全集成,并且在 ApacheGeronimo 服務(wù)器中可以直接部署 JBI組件和服務(wù)。圖 2 是 JBI 和 ServiceMix 關(guān)系圖BPELXSLTRulesScriptingJBIServicesJBIBindingComponents圖 2.JBI 和 ServiceMixServiceMix 中包含完整的 JBI 容器,支持 JBI 規(guī)范的所有功能要求- -規(guī)范化消息服務(wù)和路由- -JBI 管理 Beans(MBeans)- -組件管理和安
12、裝的 Ant 任務(wù)- -對(duì) JBI 部署單元的完全支持,支持 JBI 組件的熱部署ServiceMix 還包含如下的組件和服務(wù)-Service 服務(wù)組件o 使用 Map 緩存或者 JCache,支持服務(wù)調(diào)用緩存o 支持 Java 連接架構(gòu)o 通過 Quartz 庫集成 Timer 任務(wù)o 腳本語言支持。任何兼容于 JSR-223 規(guī)范的腳本語言可以用來創(chuàng)建組建,執(zhí)行信息轉(zhuǎn)換,或者作ServiceMixEnterpriseServiceBusSystems*FileSystem77二JCAResourcesILtgwyAppto 通過 Drools 規(guī)則引擎的提供基于規(guī)則的路由o 提供客戶端 A
13、PI 與 JBI 組件和服務(wù)交互oWeb 服務(wù)通知(WebServicesNotification)o 通過 PXE(prebootexecutionenvironment,BPEL(BusinessProcessExecutionLanguage協(xié)議的實(shí)現(xiàn)預(yù)啟動(dòng)執(zhí)行環(huán)境)提供對(duì)于 Web 服務(wù),業(yè)務(wù)流程執(zhí)行語言)的 BPEL 的支持為表達(dá)式語言使用o 支持 XSLT 擴(kuò)展樣式語言轉(zhuǎn)換o 通過 JAXP1.3 和 XMLSchema 或者 RelaxNG 提供 XMLSchema 驗(yàn)證支持。o 通過 Oracle 的 XSQL 庫支持 SQL 及 XML 的 XSQL-SOAP綁定組件o 通過
14、 ActiveSOAP 提供基于 StAX(XML 流處理 API)的對(duì) SOAP 棧的支持o 對(duì)基于 JAXP 的 Web 服務(wù)客戶端調(diào)用、服務(wù)宿主提供支持,并且支持多種協(xié)議方式o 使用反射支持 POJO 對(duì)象的部署。o 支持 JavaSOAP 附件 API 和 ApacheAxiso 通過 XFireSOAP 棧集成 POJO 對(duì)象支持o 集成 ApacheWSIF(WebServiceInvocationFramework,Web 服務(wù)調(diào)用框架)-傳輸綁定o 通過 JavaMail 支持 Email 功能o 基于文件操作的組件提供將消息寫進(jìn)文件、目錄輪詢、向 JBI 發(fā)送文件o 通過 J
15、akartaCommonsNet 庫提供 FTP 支持o 支持客戶端/服務(wù)器端 HTTP 處理o 通過 XMPP(ExtensibleMessagingandPresenceprotocol,可擴(kuò)展的消息提供協(xié)議)提供與Jabber 網(wǎng)絡(luò)的連接o 使用 ActiveMQ 支持 JMS 功能o 使用 Rome 庫支持 RSS 的訪問及處理o 使用 JakartaCommonsNet 庫支持 VFS(virtualfilesystemswitch,虛擬文件系統(tǒng)轉(zhuǎn)換),提供對(duì)于文件系統(tǒng)、jar/zip/bzip2 臨時(shí)文件、萬維網(wǎng)分布驗(yàn)證及版本機(jī)制、Samba 文件系統(tǒng)、HTTP、HTTPS、FTP
16、、SFTP 等的訪問。大部分的 ServiceMix 系統(tǒng)初始化過程、活動(dòng)過程以及消息交換過程,涉及到基于 JBI 的組件間的通信或交互。以下部分通過簡單的消息交換場景說明這些過程.(ServiceMix2.0)初始化JBI容器使用 JBI 容器之前,必須調(diào)用其 init()方法執(zhí)行初始化過程。此方法會(huì)實(shí)例化核心系統(tǒng)服務(wù),為 JMX 管理 BEAN服務(wù)器以及事務(wù)管理器等資源賦值。代碼 1 是容器啟動(dòng)代碼.代碼 1.JBI 容器初始化 protectedJBIContainerjbiContainer=newJBIContainer();jbiContainer.init();JBIContai
17、ner 類的 init 方法會(huì)依次進(jìn)行如下操作-初始化org.servicemix.jbi.management.ManagementContext 對(duì)象,并在 JMXMBean 服務(wù)器中注冊(cè)。此對(duì)象是 JBI 管理工具如 JMX 管理器的調(diào)用的首要訪問點(diǎn)。- -初始化 org.servicemix.jbi.container.EnvironmentContext 實(shí)例并在 JMXMBean 服務(wù)器中注冊(cè)。此對(duì)象創(chuàng)建資源目錄結(jié)構(gòu),各種資源包括安裝文件、部署文件、組件、共享庫、服務(wù)組合的文件等- -初始化 org.servicemix.jbi.framework.Registry 實(shí)例,此對(duì)象維
18、護(hù)服務(wù)端點(diǎn)和組件等信息。- -初始化 org.servicemix.jbi.nmr.Broker 實(shí)例,此對(duì)象管理消息隊(duì)列,并在 org.servicemix.jbi.nmr.flow.Flow 對(duì)象幫助下分發(fā)消息。消息流程對(duì)象管理消息代理對(duì)象的消息分發(fā)策略。- -初始化實(shí)現(xiàn) org.servicemix.jbi.framework.FrameworkInstallationService 的實(shí)例,止匕對(duì)象管理文件包的安裝和卸載。- -初始化 org.servicemix.jbi.framework.DeploymentService 實(shí)例,此對(duì)象部署服務(wù)單元及其相關(guān)服務(wù)單元。啟動(dòng)JBI容器如
19、下面代碼 2 所示,簡單的調(diào)用 JBIContainer 對(duì)象的 start()方法即可觸發(fā) JBI 容器的啟動(dòng)過程。此過程會(huì)啟動(dòng)所有嵌入的組件和服務(wù),比如服務(wù)注冊(cè)區(qū)、消息代理、管理上下文、環(huán)境上下文、安裝服務(wù)、部署服務(wù)等。多數(shù)組件和服務(wù)的啟動(dòng)過程僅僅設(shè)置一個(gè)標(biāo)志位,以表明組件或服務(wù)處于運(yùn)行狀態(tài),而且與組件關(guān)聯(lián)的定時(shí)計(jì)劃任務(wù)開始執(zhí)行。代碼 2.啟動(dòng) JBI 容器jbiContainer.start();創(chuàng)建支持組件ServiceMix 框架中作為消息生產(chǎn)者和提供者的對(duì)象常被稱為支持組件。這些對(duì)象實(shí)現(xiàn)了ponent.Component 接口,使得 JBI 容器和其它關(guān)聯(lián)對(duì)象能夠以標(biāo)準(zhǔn)方式操作它們
20、。在ServiceMix 系統(tǒng)中,此類對(duì)象一般繼承于 ponents.util 包內(nèi)的某些支持(Support)類,比如 ComponentSupport 或者 PojoSupport。通過繼承,支持組件獲得了作為 JBI 組件的缺省行為,比如 JMX 功能等。支持組件一般通過 ponent.ComponentContext 對(duì)象獲得 DeliveryChannel 對(duì)象,以用于實(shí)際的消息交換(messageexchange)對(duì)象的創(chuàng)建和處理。請(qǐng)留意代碼 3 中支持組件的類/接口層次。代碼 3 支持組件類層次/PojoSupport 類封裝了簡單的基于 POJO 的組件,提供標(biāo)準(zhǔn)的被 Serv
21、iceMix 管理的組件的功能publicabstractclassPojoSupportextendsorg.servicemix.jbi.management.BaseLifeCponent.ComponentLifeCycle/Componentsupport 類擴(kuò)展了 PojoSupport 類,提供標(biāo)準(zhǔn) JBI 組件功能。publicabstractclassCponents.util.PojoSponent.Component)/SenderComponent 類是消息生產(chǎn)者publicclassSenderCponents.util.ComponentSupportimpleme
22、ntsSender)/類 ReceiverComponent 是消息消費(fèi)者publicclassReceiverCponents.util.ComponentSupportimplementsorg.servicemix.MessageExchangeListener,Receiver)激活支持組件在使用 ServiceMixESB 系統(tǒng)中的組件前,這些組件必須得到激活”。相應(yīng)步驟如下:- -創(chuàng)建 DeliveryChannel 類的實(shí)例,此對(duì)象參與隨后的消息交換DeliveryChannel 負(fù)責(zé):o 獲取路由到此組件的消息o 發(fā)送異步消息o 發(fā)送同步消息注冊(cè) org.servicemix.
23、jbi.framework.ComponentRegistry 類的組件,注冊(cè)后獲得個(gè)org.servicemix.jbi.framework.ComponentConnector 類的實(shí)例,Servicemix 系統(tǒng)在內(nèi)部使用止匕ComponentConnector 對(duì)象來交換消息。一在組件注冊(cè)區(qū)內(nèi)注冊(cè)上面步驟獲得的 ComponentConnector 對(duì)象,將此對(duì)象與org.servicemix.jbi.container.EnvironmentContext 關(guān)聯(lián)。此對(duì)象維護(hù)組件運(yùn)行的 JBI 執(zhí)行環(huán)境,包括安裝路徑、部署路徑、服務(wù)單元目錄等信息。-調(diào)用組件的生命周期 init()方法
24、,然后執(zhí)行其 start()方法。-封裝對(duì)象的 ComponentConnector 實(shí)例為一個(gè) JMX 管理 Bean,并在 JBI 容器的 JMX 管理 Bean服務(wù)器(MBeanServer)中注冊(cè)此 Bean。激活組件需要與 org.servicemix.jbi.container.JBIContainer 類交互,調(diào)用其activateComponent()方法。止匕方法使用 org.servicemix.jbi.container.ActivationSpec 類的實(shí)例,以此構(gòu)建有效的 JBI 組件。ActivationSpec 對(duì)象是最終可以被激活的三種 Java 類型中的一種的
25、實(shí)例。對(duì)應(yīng)類型如下:ponent.Cponent.ComponentLifeC.servicemix.MessageExchangeListener:ponents.util.PojoLifecycleAponents.util.PojoLifecycleAponents.util.ComponentAponents.util.ComponentAdaptorMEListener代碼 4 說明了如何激活消息發(fā)送和接收組件。代碼 4 激活發(fā)送和接收組件/激活發(fā)送組件StringsenderComponentID=sender;org.servicemix.jbi.contain
26、er.ActivationSpecsenderActivationSpec=neworg.servicemix.jbi.container.ActivationSpec(senderComponentID,sender);jbiContainer.activateComponent(senderActivationSpec);/激活接收組件StringreceiverComponentID=receiver;org.servicemix.jbi.container.ActivationSpecreceverActivationSpec=neworg.servicemix.jbi.contain
27、er.ActivationSpec(receiverComponentID,receiver)jbiContainer.activateComponent(receverActivationSpec);使用支持組件發(fā)送以及接收消息在 ServiceMix 中發(fā)送消息,需要通過發(fā)送者支持組件傳輸此消息,需要消息接收支持組件監(jiān)聽并接收此信息。典型的發(fā)送組件1 .AComponentcontext 組件獲取 javax.jbi.messaging.DeliveryChannel 實(shí)例2 .從 DeliveryChannel 實(shí)例獲取 javax.jbi.messaging.MessageExchan
28、geFactory 類實(shí)例3 .使用 MessageExchangeFactory 實(shí)例創(chuàng)建包含消息內(nèi)容的javax.jbi.messaging.MessageExchange 實(shí)例此對(duì)象實(shí)例被封裝在或或類型實(shí)例中。比如4 .通過 DeliveryChannel 實(shí)例將 MessageExchange 實(shí)例發(fā)送到目的地。代碼 5 中通過發(fā)送組件發(fā)送基于字符串的 XML 消息代碼 5.發(fā)送消息publicvoidsendMessage(Stringxml)tryComponentContextcontext=getContext();InOnlyexchange=context.getDeliv
29、eryChannel().createExchangeFactory().createInOnlyExchange();NormalizedMessagemessage=exchange.createMessage();message.setContent(newStringSource(xml);if(resolver!=null)ServiceEndpointdestination=resolver.resolveEndpoint(getContext(),exchange,NullEndpointFilter.getInstance();exchange.setEndpoint(dest
30、ination);exchange.setInMessage(message);/現(xiàn)在,發(fā)送 exchange 消息context.getDeliveryChannel().send(exchange);catch(Exceptione)e.printStackTrace();對(duì)特定消息感興趣的組件可以通過 JBI 框架提供的多種途徑來訂閱消息交換對(duì)象。一種簡單機(jī)制是,接收組件可以實(shí)現(xiàn) MessageExchangeListener 接口,發(fā)送組件設(shè)定此接受者為org.servicemix.jbi.resolver.EndpointResolver 端點(diǎn)解析組件。這樣設(shè)定之后,ServiceM
31、ix 會(huì)完成從發(fā)送者到接受者的消息傳輸過程。代碼 6 說明了此過程。代碼 6 基于端點(diǎn)解析的簡單接收過程publicclassReceivercomponentextendsComponentsupportimplementsMessageExchangeListener,Receiver/MessageExchangeListener 接口的方法publicvoidonMessageExchange(MessageExchangeexchange)throwsMessagingExceptionNormalizedMessageinMessage=exchange.getMessage(in
32、);if(inMessage=null)thrownewMessagingException(Nullinmessagedelivered!);System.out.println(inMessage);創(chuàng)建接收與發(fā)送組件,并將接收組件設(shè)置為發(fā)送組件中的 EndpointResolver 對(duì)象ReceiverComponentreceiver=newReceiverComponent();SenderComponentsender=newSenderComponent();sender.setResolver(newServiceNameEndpointResolver(ReceiverComponent.QNAME);圖 3 是 ServiceMix 中發(fā)送接收簡單消息交換的序列圖工|Faj4lnfl|SBHduWl.K!1F,.ijF,P彳由!HFJI一j,11xFnrn-F-1-TT-、11fl圖 3.發(fā)送接受簡單消息在 Windows 中安裝啟動(dòng) ServiceMix下載并在 Windows 系統(tǒng)中安裝 2 進(jìn)制分發(fā)包,需如下步
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第2.6講 指數(shù)與指數(shù)函數(shù)(解析版)-2024年高考數(shù)學(xué)一輪復(fù)習(xí)精講精練寶典(新高考專用)
- 浙教版2023小學(xué)信息技術(shù)六年級(jí)上冊(cè)《算法的多樣性》教學(xué)設(shè)計(jì)及反思
- (一模)萍鄉(xiāng)市2025年高三第一次模擬考試歷史試卷(含答案解析)
- 2025年B2B營銷業(yè)務(wù) AI提示詞手冊(cè)
- 陶瓷攔水帶施工方案
- 高樓地鐵隧道施工方案
- 砂漿基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025年山東聊城高三一模高考數(shù)學(xué)試卷試題(含答案詳解)
- 2025年藥具科技工作培訓(xùn)標(biāo)準(zhǔn)教案
- 寫贈(zèng)予房產(chǎn)合同范例
- 2024-2025學(xué)年第二學(xué)期天域全國名校協(xié)作體高三3月聯(lián)考 地理試卷(含答案)
- 修理木橋施工合同范本
- 學(xué)校2025年每日兩小時(shí)體育活動(dòng)方案-陽光體育活力四溢
- 錘擊式PHC預(yù)應(yīng)力混凝土管樁貫入度的控制
- 新教科版一年級(jí)科學(xué)下冊(cè)第一單元第6課《哪個(gè)流動(dòng)得快》課件
- 屋面種植土垂直施工方案
- 2025年新人教PEP版英語三年級(jí)下冊(cè)全冊(cè)課時(shí)練習(xí)
- 《愛耳日課件》課件
- 2024年安徽中醫(yī)藥高等??茖W(xué)校高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2025年保密工作計(jì)劃(3篇)
評(píng)論
0/150
提交評(píng)論