版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、CSI架構(gòu)及使用CSI架構(gòu)及使用第 PAGE 51頁(yè) 共 SECTIONPAGES 52頁(yè)目錄 TOC o 1-3 h z u HYPERLINK l _Toc238035390 1 前言 PAGEREF _Toc238035390 h 1 HYPERLINK l _Toc238035391 1.1 編寫目的 PAGEREF _Toc238035391 h 1 HYPERLINK l _Toc238035392 1.2 CSI架構(gòu) PAGEREF _Toc238035392 h 2 HYPERLINK l _Toc238035393 1.2.1 CSI層次結(jié)構(gòu) PAGEREF _Toc2380
2、35393 h 3 HYPERLINK l _Toc238035394 1.2.2 CSI與應(yīng)用系統(tǒng) PAGEREF _Toc238035394 h 3 HYPERLINK l _Toc238035395 1.3 預(yù)期讀者 PAGEREF _Toc238035395 h 3 HYPERLINK l _Toc238035396 1.4 適用范圍 PAGEREF _Toc238035396 h 4 HYPERLINK l _Toc238035397 1.5 術(shù)語(yǔ)定義 PAGEREF _Toc238035397 h 4 HYPERLINK l _Toc238035398 2 CSI在基于SUP2應(yīng)用
3、中的使用 PAGEREF _Toc238035398 h 4 HYPERLINK l _Toc238035399 2.1 服務(wù)發(fā)布 PAGEREF _Toc238035399 h 6 HYPERLINK l _Toc238035400 2.2 服務(wù)消費(fèi) PAGEREF _Toc238035400 h 9 HYPERLINK l _Toc238035401 3 CSI在非基于SUP2應(yīng)用中的使用 PAGEREF _Toc238035401 h 11 HYPERLINK l _Toc238035402 3.1 服務(wù)發(fā)布 PAGEREF _Toc238035402 h 11 HYPERLINK l
4、_Toc238035403 3.1.1 配置通道 PAGEREF _Toc238035403 h 11 HYPERLINK l _Toc238035404 3.1.2 定義服務(wù) PAGEREF _Toc238035404 h 14 HYPERLINK l _Toc238035405 3.1.3 配置服務(wù)訪問(wèn)控制 PAGEREF _Toc238035405 h 15 HYPERLINK l _Toc238035406 3.1.4 注意事項(xiàng) PAGEREF _Toc238035406 h 16 HYPERLINK l _Toc238035407 3.2 服務(wù)消費(fèi) PAGEREF _Toc23803
5、5407 h 17 HYPERLINK l _Toc238035408 3.2.1 配置尋址服務(wù)信息 PAGEREF _Toc238035408 h 18 HYPERLINK l _Toc238035409 3.2.2 定義服務(wù)引用 PAGEREF _Toc238035409 h 19 HYPERLINK l _Toc238035410 3.2.3 配置服務(wù)訪問(wèn)控制 PAGEREF _Toc238035410 h 20 HYPERLINK l _Toc238035411 3.2.4 程序調(diào)用服務(wù) PAGEREF _Toc238035411 h 21 HYPERLINK l _Toc238035
6、412 3.2.5 注意事項(xiàng) PAGEREF _Toc238035412 h 25 HYPERLINK l _Toc238035413 3.3 CSI核心配置 PAGEREF _Toc238035413 h 26 HYPERLINK l _Toc238035414 3.3.1 配置Http服務(wù)servlet PAGEREF _Toc238035414 h 27 HYPERLINK l _Toc238035415 3.3.2 配置WebService服務(wù)servlet PAGEREF _Toc238035415 h 28 HYPERLINK l _Toc238035416 3.3.3 總結(jié) PA
7、GEREF _Toc238035416 h 29 HYPERLINK l _Toc238035417 3.4 CSI日志 PAGEREF _Toc238035417 h 29 HYPERLINK l _Toc238035418 3.4.1 日志實(shí)現(xiàn)方式 PAGEREF _Toc238035418 h 29 HYPERLINK l _Toc238035419 3.4.2 日志格式 PAGEREF _Toc238035419 h 29 HYPERLINK l _Toc238035420 3.4.3 日志使用建議 PAGEREF _Toc238035420 h 31 HYPERLINK l _Toc
8、238035421 3.5 安裝部署 PAGEREF _Toc238035421 h 31 HYPERLINK l _Toc238035422 3.5.1 Tomcat(5.0以上) PAGEREF _Toc238035422 h 32 HYPERLINK l _Toc238035423 3.5.2 Weblogic (8.1) PAGEREF _Toc238035423 h 33 HYPERLINK l _Toc238035424 3.5.3 Weblogic (9.2) PAGEREF _Toc238035424 h 35 HYPERLINK l _Toc238035425 3.5.4 W
9、ebsphere (6.1) PAGEREF _Toc238035425 h 37 HYPERLINK l _Toc238035426 3.6 實(shí)例講解 PAGEREF _Toc238035426 h 39 HYPERLINK l _Toc238035427 3.6.1 實(shí)例一:調(diào)用和發(fā)布簡(jiǎn)單服務(wù) PAGEREF _Toc238035427 h 39 HYPERLINK l _Toc238035428 3.6.2 定義服務(wù)引用 PAGEREF _Toc238035428 h 41 HYPERLINK l _Toc238035429 3.6.3 實(shí)例二:服務(wù)異常的處理 PAGEREF _Toc2
10、38035429 h 44 HYPERLINK l _Toc238035430 3.6.4 實(shí)例三:使用復(fù)雜數(shù)據(jù) PAGEREF _Toc238035430 h 47 HYPERLINK l _Toc238035431 3.6.5 服務(wù)實(shí)現(xiàn)的設(shè)計(jì) PAGEREF _Toc238035431 h 47 HYPERLINK l _Toc238035432 4 附錄 PAGEREF _Toc238035432 h 53 HYPERLINK l _Toc238035433 4.1 CSI 程序包 PAGEREF _Toc238035433 h 53 HYPERLINK l _Toc238035434
11、4.2 依賴第三方JAR清單 PAGEREF _Toc238035434 h 53前言編寫目的CSI Common Service Interconnection(通用服務(wù)互聯(lián)),則是幫助應(yīng)用系統(tǒng)在“直連”方式下方便的發(fā)布、消費(fèi)服務(wù)。使用CSI的應(yīng)用系統(tǒng)不再需要關(guān)心如何將業(yè)務(wù)功能發(fā)布成服務(wù)或如何消費(fèi)其他系統(tǒng)發(fā)布的服務(wù),只需要進(jìn)行簡(jiǎn)單的配置就可以將已有的業(yè)務(wù)功能發(fā)布成服務(wù)或消費(fèi)別的應(yīng)用發(fā)布的服務(wù)。本文為應(yīng)用系統(tǒng)的技術(shù)人員提供CSI的相關(guān)介紹,以便他們能夠充分掌握CSI的特性。CSI架構(gòu)CSI層次結(jié)構(gòu)CSI主要有服務(wù)發(fā)布方和服務(wù)消費(fèi)方兩個(gè)部分;服務(wù)消費(fèi)方分為通道 通道是指服務(wù)通過(guò)某種方式發(fā)布出來(lái),
12、使服務(wù)消費(fèi)方可以消費(fèi),CSI目前支持的通道是http、webservice、ejb層、服務(wù)消費(fèi)代理層兩個(gè)層次;服務(wù)發(fā)布方也分為兩個(gè)層次:通道層和服務(wù)發(fā)布方代理層。CSI通過(guò)通道層來(lái)屏蔽采用http、webservice、ejb等方式發(fā)布服務(wù)所帶來(lái)的差異性,同時(shí)支持相同的業(yè)務(wù)實(shí)現(xiàn)可以使用不同的通道發(fā)布服務(wù)。服務(wù)消費(fèi)代理層,為服務(wù)消費(fèi)者提供服務(wù)調(diào)用的功能,屏蔽底層技術(shù)細(xì)節(jié)(消費(fèi)日志、報(bào)文結(jié)構(gòu)、安全保護(hù)、服務(wù)定位等)。服務(wù)發(fā)布代理層,負(fù)責(zé)將指定的業(yè)務(wù)功能發(fā)布為服務(wù),可供其它系統(tǒng)消費(fèi)。通過(guò)該層,服務(wù)發(fā)布方不需要過(guò)多關(guān)心發(fā)布服務(wù)的技術(shù)細(xì)節(jié),而更多的專注于服務(wù)的業(yè)務(wù)實(shí)現(xiàn)。CSI與應(yīng)用系統(tǒng)應(yīng)用系統(tǒng)通過(guò)普通J
13、ava調(diào)用的方式使用CSI服務(wù)消費(fèi)方代理對(duì)遠(yuǎn)端服務(wù)進(jìn)行訪問(wèn)。而發(fā)布服務(wù)只需在應(yīng)用系統(tǒng)編輯相應(yīng)的配置文件,CSI利用J2ee中web container提供的機(jī)制自動(dòng)加載這些配置文件從而完成相應(yīng)服務(wù)的發(fā)布。預(yù)期讀者設(shè)計(jì)人員、開發(fā)人員。適用范圍采用CSI進(jìn)行J2EE應(yīng)用直連的場(chǎng)景,第2、3章節(jié)分別介紹基于SUP2的應(yīng)用使用CSI和非基于SUP2應(yīng)用中使用CSI的指南。JDK:jdk1.4.2、jdk5應(yīng)用服務(wù)器:Tomcat5.0,Tomcat5.5、weblogic8.1+、weblogic9.2、websphere6.1Web服務(wù)器:Apache2.0.*或更高版本術(shù)語(yǔ)定義POJO:Plain
14、 Old Java Object的縮寫,POJO是不實(shí)現(xiàn)任何J2EE容器接口的普通Java對(duì)象,其負(fù)責(zé)實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)邏輯,業(yè)界提出POJO這個(gè)概念主要為了區(qū)別于EJB這樣一些結(jié)構(gòu)復(fù)雜的與J2EE容器密切相關(guān)的Java對(duì)象。JavaBean:這里把具有setter、getter方法,不包含業(yè)務(wù)邏輯只承載數(shù)據(jù)的java對(duì)象統(tǒng)一稱為Java Bean。CSI在基于SUP2應(yīng)用中的使用在SUP2中進(jìn)行CSI配置非常簡(jiǎn)單,它提供了一套可視化界面來(lái)幫助開發(fā)人員配置。開發(fā)人員只需在所要使用CSI的組件包上單擊鼠標(biāo)右鍵,并選擇“CSI配置”即可進(jìn)入配置界面。操作如圖:?jiǎn)螕羰髽?biāo)右鍵,出現(xiàn)右邊的菜單。點(diǎn)擊“CSI
15、配置”菜單項(xiàng),出現(xiàn)下面的配置界面:該配置界面共分成“服務(wù)”和“引用”兩部分,其中“服務(wù)”用于定義本組件包向外發(fā)布的服務(wù),“引用”則用于定義本組件包引用的外部服務(wù)。下面我們來(lái)逐個(gè)介紹它們的配置情況。服務(wù)發(fā)布在“服務(wù)”選項(xiàng)卡里,輸入“名稱空間”,并點(diǎn)擊“通道列表”中的“”按鈕進(jìn)行“通道”的配置,操作如下圖:通道配置界面打開后,輸入:通道ID,協(xié)議類型和協(xié)議信息(通道各屬性的含義請(qǐng)參考2.1.1節(jié)),最后點(diǎn)擊“確定”完成“通道”的配置,配置如下圖:完成“通道”的配置后,又會(huì)返回“服務(wù)”選項(xiàng)卡,通過(guò)點(diǎn)擊“服務(wù)列表”旁的“”按鈕,進(jìn)入“新建服務(wù)”界面,操作如下圖:“新建服務(wù)”界面打開后,按照順序完成相關(guān)
16、屬性的配置,注意其中的“序列化方式”、“通道ID”、“實(shí)現(xiàn)方式”中的屬性值是可選的,至于每個(gè)屬性的含義請(qǐng)參考“2.1.2節(jié)”這里不做復(fù)述。完成“新建服務(wù)”的輸入后點(diǎn)擊“確定”,即可完成整個(gè)發(fā)布服務(wù)的配置并進(jìn)入最初的配置界面,這時(shí)如點(diǎn)擊“引用”選項(xiàng)卡則進(jìn)入“服務(wù)引用”配置界面,如下圖:服務(wù)消費(fèi)引用服務(wù)配置界面由“Remote列表”和“Reference列表”兩部分組成,點(diǎn)擊兩個(gè)列表旁的“”按鈕則可進(jìn)入相應(yīng)的配置界面,圖示如下:點(diǎn)擊“Remote列表”旁的“”按鈕可以進(jìn)入“新建Remote”界面,按照順序輸入相關(guān)屬性值(各屬性的含義請(qǐng)參考“2.2.1節(jié)”),操作如下圖:點(diǎn)擊“確定”后則返回引用服務(wù)
17、配置初始界面,在初始界面中點(diǎn)擊“Reference列表”旁的“”按鈕進(jìn)入“新建引用”配置界面,按照順序輸入相關(guān)屬性值(具體屬性含義請(qǐng)參考“2.1.2節(jié)”),操作如下圖:點(diǎn)擊“確定”即可完成整個(gè)服務(wù)引用的配置并返回配置初始界面,最后點(diǎn)擊“確定”即完成整個(gè)CSI的配置。CSI在非基于SUP2應(yīng)用中的使用主要講述如何使用CSI發(fā)布、消費(fèi)服務(wù)。服務(wù)發(fā)布CSI將J2EE應(yīng)用中的POJO和Spring Context中的Spring Bean通過(guò)http、webservice、ejb等發(fā)布成服務(wù)以讓其它系統(tǒng)使用的過(guò)程叫做服務(wù)發(fā)布。通過(guò)CSI發(fā)布服務(wù)只需要進(jìn)行相應(yīng)的配置;在CSI中配置一個(gè)服務(wù)需要進(jìn)行三步:
18、1.配置通道;2.定義服務(wù);3.配置服務(wù)訪問(wèn)控制(可選)。配置通道整個(gè)CSI通道的配置分為三大塊:channel-list、channel和通訊方式。其中整個(gè)系統(tǒng)與外界聯(lián)系的通道都在channel-list中定義,而CSI提供了http、webservice、ejb三種通訊方式,它們會(huì)和一個(gè)channel進(jìn)行綁定,進(jìn)而使每個(gè)通道具有明確的屬性定義。示例如下:每個(gè)channel都有一個(gè)id,它是自己的唯一標(biāo)識(shí)。同時(shí)在服務(wù)定義中它會(huì)被引用,用于標(biāo)識(shí)服務(wù)所使用的通道。 8080sup-default 8080sup-defaultiiop:/:2810com.ibm.websphere.naming
19、.WsnInitialContextFactoryINTERCONNECTION-EJB下面詳細(xì)介紹三種通訊方式的配置:http 8080sup-defaulthttp的配置由host、prot、context-root和properties四部分組成。其中host用于表示通道自身的IP地址便于服務(wù)消費(fèi)方查找,port表示本通道開放的端口,context-root就是服務(wù)所在J2EE應(yīng)用的context perties目前不需要配置,留未來(lái)擴(kuò)展使用。webservice8080sup-defaultwebservice的配置與http的類似,即由host、prot、context-root和p
20、roperties四部分組成。其中host用于表示通道自身的IP地址便于服務(wù)消費(fèi)方查找,port表示本通道開放的端口,context-root就是服務(wù)所在J2EE應(yīng)用的context perties目前不需要配置,留未來(lái)擴(kuò)展使用。ejbWebsphere提供的iiop:/:2810com.ibm.websphere.naming.WsnInitialContextFactoryINTERCONNECTION-EJBejb的配置也是由四部分組成,其中provider-url就是jndi的連接字符串,init-context-factory即是不同J2ee服務(wù)器提供的InitialContext生
21、成工廠;jndi-name即該ebj的jndi名字;properties即其他一些屬性配置,目前無(wú)需設(shè)置。定義服務(wù)CSI可以將以POJO和Spring Bean實(shí)現(xiàn)的業(yè)務(wù)類發(fā)布成服務(wù)。整個(gè)發(fā)布過(guò)程很簡(jiǎn)單,只需開發(fā)人員在配置文件中進(jìn)行編輯即可。配置發(fā)布的服務(wù)是由service-list與service兩部分組成,其中每個(gè)服務(wù)對(duì)應(yīng)一個(gè)service,而所有的serivce都被service-list涵蓋在其中。配置示例如下:服務(wù)標(biāo)識(shí)所使用的通道idtestPojochannelB服務(wù)的實(shí)現(xiàn)類型是pojo還是spring,這里是pojo。testSpringBeanchannelA這里是spring
22、配置一個(gè)服務(wù)主要由:配置服務(wù)標(biāo)識(shí)、通道id和服務(wù)實(shí)現(xiàn)三部分組成。其中:服務(wù)標(biāo)識(shí)的相關(guān)配置主要包括:服務(wù)名稱(name)、服務(wù)的版本(version)、序列化類型(serializer)。這里需要特別說(shuō)明的是序列化類型:CSI目前的序列化類型只提供xml和json兩種。通道id就是指前面配置通道中定義的通道id,即標(biāo)簽中的id屬性。服務(wù)的實(shí)現(xiàn)目前CSI提供pojo和Spring兩種,pojo需要填寫class-name即java類的全稱,spring則需要填寫spring配置文件中定義的bean-id名稱,其中properties屬性目前暫不使用,留未來(lái)擴(kuò)展使用。配置服務(wù)訪問(wèn)控制CSI面向服務(wù)發(fā)
23、布方提供訪問(wèn)超時(shí)和報(bào)文大小兩方面的控制,應(yīng)用系統(tǒng)只需在配置文件(csi-system-config.xml)中設(shè)定相應(yīng)的值,目前當(dāng)超出訪問(wèn)控制預(yù)設(shè)的值時(shí)CSI不會(huì)中斷調(diào)用、響應(yīng)過(guò)程,只是在日志中記錄相應(yīng)信息。配置如下:-1-1timeout是指連接超時(shí)時(shí)間,單位毫秒?!?1”表示不做限制。max-message表示服務(wù)發(fā)布方接收?qǐng)?bào)文和響應(yīng)報(bào)文的最大字節(jié)數(shù),單位byte?!?1”表示不做限制。csi-system-config.xml,該配置文件的默認(rèn)名為csi-system-config.xml,若使用其他名稱則必須在Web應(yīng)用的web.xml中增加相應(yīng)的配置。配置示例如下:此參數(shù)名固定不能隨
24、便修改 csiSystemConfigLocation /WEB-INF/classes/csi-system-config.xml文件的存放的相對(duì)路徑(相對(duì)web應(yīng)用的路徑)和文件名注意事項(xiàng)前面說(shuō)的“配置通道”、“定義服務(wù)”涉及到得配置內(nèi)容都在同一個(gè)文件中進(jìn)行。默認(rèn)的配置文件名稱為:service-define.cs.xml,直接放到WEB-INF/classes下,CSI可以自動(dòng)加載此文件;用戶也可根據(jù)自身需要修改文件名,但請(qǐng)保證具有“cs.xml”的擴(kuò)展名,另外還需要將該配置文件在J2EE 應(yīng)用(web)中的web.xml通過(guò)context-param參數(shù)進(jìn)行映射說(shuō)明,也可根據(jù)需要定義多
25、個(gè)配置文件,但每個(gè)配置文件都相對(duì)獨(dú)立,也就是說(shuō)在一個(gè)配置文件中定義的服務(wù)只能引用本配置文件定義的通道,不能引用其他配置文件中定義的通道。示例如下:注意:這個(gè)名稱是固定的! csiServiceDefineLocation /WEB-INF/classes/service-define-xxx.xml/WEB-INF/classes/service-define-yyy.xml cn.ccb.sup.csi.server.web.ServiceLoadContextListener在整個(gè)服務(wù)發(fā)布的過(guò)程中還涉及一個(gè)命名空間問(wèn)題,每個(gè)服務(wù)發(fā)布配置文件都會(huì)有一個(gè)命名空間,該空間只在自身配置文件中有效,
26、如果一個(gè)應(yīng)用有多個(gè)服務(wù)發(fā)布配置文件,則每個(gè)配置文件可以有各自的命名空間,它們之間互不影響。示例如下:該屬性會(huì)在服務(wù)消費(fèi)時(shí)用到,主機(jī)IP地址+命名空間+服務(wù)名稱可以定位一個(gè)服務(wù)。服務(wù)消費(fèi)要在CSI中消費(fèi)服務(wù)需要做兩件事情:1.在消費(fèi)服務(wù)的配置文件中配置服務(wù)信息;2.通過(guò)CSI提供的API在程序代碼中調(diào)用該服務(wù)。其中配置文件主要分:尋址服務(wù)信息尋址服務(wù)信息:主要用于描述查找“應(yīng)用服務(wù)”的服務(wù)所處的位置,服務(wù)消費(fèi)端CSI在調(diào)用“應(yīng)用服務(wù)”前通過(guò)此信息去查找服務(wù),獲取“應(yīng)用服務(wù)”的相關(guān)信息,之后調(diào)用“應(yīng)用服務(wù)”和服務(wù)引用兩部分,同時(shí)CSI提供的API則有代理和弱類型兩種方式。配置尋址服務(wù)信息服務(wù)消費(fèi)端
27、的配置總體分為remote-list和reference-list兩部分。其中remote-list可以包含一個(gè)或多個(gè)remote,而每個(gè)remote則表示一個(gè)尋址服務(wù)信息。同理reference-list中也可包含一個(gè)或多個(gè)reference,一個(gè)reference則表示一個(gè)需要被引用的服務(wù)。配置示例如下:47001sup-default因?yàn)閞emote-list無(wú)任何屬性,所以這里不做介紹。remote中共提供了id、host、port、context-root、properties五種屬性,下面對(duì)其逐一說(shuō)明:id用于唯一標(biāo)識(shí)一個(gè)remote;host用于表示尋址服務(wù)所在服務(wù)器的主機(jī)IP地
28、址,目前為服務(wù)發(fā)布方的服務(wù)器地址。port用于表示尋址服務(wù)所在服務(wù)器的端口號(hào),目前為服務(wù)發(fā)布方服務(wù)器的端口號(hào)context-root表示尋址服務(wù)所在web應(yīng)用的context-root與“2.1.1節(jié)”中涉及的context對(duì)應(yīng)。目前為服務(wù)發(fā)布方所在web應(yīng)用的perties屬性列表,用于未來(lái)擴(kuò)展。定義服務(wù)引用定義服務(wù)引用是在配置文件中進(jìn)行的,整個(gè)引用服務(wù)的定義分為:reference-list和reference兩部分。其中reference-list可包含一個(gè)或多個(gè)reference,一個(gè)定義好的reference則表示一個(gè)需要被引用的服務(wù)。配置示例如下:h
29、ttp:/cn.ccbcn.ccb.sup.TesttestserverAhttp:/cn.ccbcn.ccb.sup.TestHJtestaserverA因?yàn)閞eference-list無(wú)任何屬性,所以這里不做介紹。reference中共有id、namespace、service-name、description、remote-id、properties六種屬性,下面對(duì)其逐一說(shuō)明:id :用于唯一標(biāo)識(shí)一個(gè)被定義的引用,程序中調(diào)用服務(wù)需要使用到此idnamespace : 所要引用的服務(wù)所在的namespace,此屬性必須與發(fā)布服務(wù)的namespace對(duì)應(yīng),否則會(huì)造成無(wú)法找到指定的服務(wù)。ser
30、vice-name :所要引用的服務(wù)的服務(wù)名稱。description : 對(duì)該服務(wù)的描述。remote-id : 用于指明所使用remote-list中的perties : 屬性列表,用于未來(lái)擴(kuò)展。配置服務(wù)訪問(wèn)控制CSI為服務(wù)消費(fèi)方也提供了訪問(wèn)超時(shí)和報(bào)文大小兩方面的控制,應(yīng)用系統(tǒng)只需在配置文件(csi-system-config.xml)中設(shè)定相應(yīng)的值,目前當(dāng)超出訪問(wèn)控制預(yù)設(shè)的值時(shí)CSI不會(huì)中斷調(diào)用、響應(yīng)過(guò)程,只是在日志中記錄相應(yīng)信息。配置如下:-1-1timeout是指連接超時(shí)時(shí)間,單位毫秒。“-1”表示不做限制。max-message表示服務(wù)發(fā)布方接收?qǐng)?bào)文和響應(yīng)報(bào)文的
31、最大字節(jié)數(shù),單位byte?!?1”表示不做限制。csi-system-config.xml,該配置文件的默認(rèn)名為csi-system-config.xml,若使用其他名稱則必須在Web應(yīng)用的web.xml中增加相應(yīng)的配置。配置示例如下:此參數(shù)名固定不能隨便修改 csiSystemConfigLocation /WEB-INF/classes/csi-system-config.xml文件的存放的相對(duì)路徑(相對(duì)web應(yīng)用的路徑)和文件名 cn.ccb.sup.csi.server.web.ServiceLoadContextListener程序調(diào)用服務(wù)在完成定義服務(wù)引用后,開發(fā)人員就可以使用程序
32、代碼進(jìn)行服務(wù)的調(diào)用。CSI提供proxy和invoke兩種方式來(lái)支持開發(fā)人員通過(guò)程序代碼調(diào)用服務(wù)。通過(guò)ServiceClientFactory.getInstance().getServiceClient()方法可得到一個(gè)IServiceClient對(duì)象,通過(guò)該對(duì)象可以調(diào)用服務(wù)。proxy方式:這種方式通過(guò)Java接口或者相關(guān)類產(chǎn)生代理對(duì)象,通過(guò)代理對(duì)象調(diào)用服務(wù)。此方式的優(yōu)點(diǎn):接口清晰、簡(jiǎn)潔,符合Java編程習(xí)慣。缺點(diǎn):必須在本地部署服務(wù)Java接口、相關(guān)類的類文件。代碼示例:IServiceClient client = ServiceClientFactory.getInstance().
33、getServiceClient();ITestUCC testUcc = (ITestUCC) client.newProxyInstance(this.REFERENCE_ID, ITestUCC.class);List list=testUcc.findAllUsers();其中:IServiceClient 類中的Object newProxyInstance(String referenceID, Class serviceInterface)方法用于生成服務(wù)調(diào)用代理實(shí)例,參數(shù):referenceID 服務(wù)引用ID(對(duì)應(yīng)服務(wù)引用配置文件中的reference id)、參數(shù):servi
34、ceInterface 服務(wù)接口,返回值Object即為服務(wù)接口,它經(jīng)過(guò)強(qiáng)制轉(zhuǎn)換后就和正常的java接口一樣正常使用。invoke方式:這種調(diào)用方式通過(guò)傳遞要調(diào)用服務(wù)的方法名等信息來(lái)調(diào)用服務(wù)的相應(yīng)功能。此種調(diào)用方式的優(yōu)點(diǎn):不需要服務(wù)相關(guān)的類定義文件,不受制于java版本的差異。缺點(diǎn):調(diào)用接口不符合java的編程習(xí)慣,服務(wù)接口不太明晰,程序編寫相對(duì)復(fù)雜。這種方式通過(guò)調(diào)用IServiceClient 類中的Object invoke(String referenceID, String methodName, Object args) throws InvocationBizException,
35、CSIRuntimeException方法即可使用invoke的方式完成對(duì)服務(wù)的調(diào)用。參數(shù)說(shuō)明如下:referenceID 服務(wù)引用IDmethodName 方法名稱args 參數(shù)列表返回值說(shuō)明: 返回類型為Object異常說(shuō)明: * InvocationBizException 目標(biāo)服務(wù)調(diào)用發(fā)生異常 * CSIRuntimeException CSI框架發(fā)生的異常代碼示例:IServiceClient client = ServiceClientFactory.getInstance().getServiceClient();Test test=Test.FACTORY.create();O
36、bject args=new Object1;test.setName(testName);BigDecimal bd=new BigDecimal(4444.4);test.setMoney(bd);args0=test;Object obj=client.invoke(this.REFERENCE_ID, this.INSERT_SDO_METHOD, args);ObjectBean的使用在使用Invoke方式時(shí),服務(wù)消費(fèi)方不需要服務(wù)相關(guān)的Java類定義,但在一些場(chǎng)景中,服務(wù)的方法中存在服務(wù)發(fā)布系統(tǒng)自定義的Java Bean,為了達(dá)到服務(wù)消費(fèi)方不需要這些Java Bean的定義也能調(diào)用相
37、應(yīng)服務(wù),而提出了ObjectBean,ObjectBean用于描述相應(yīng)Java Bean的類結(jié)構(gòu)以及其承載的數(shù)據(jù)。ObjectBean使用場(chǎng)景使用Invoke方式調(diào)用服務(wù),何時(shí)使用ObjectBean,什么時(shí)候不需要使用,以示例方式說(shuō)明。示例1:服務(wù)方法:xxxMethod傳入?yún)?shù):int a,String b,BigDecimal c返回參數(shù):String values調(diào)用說(shuō)明:相應(yīng)服務(wù)方法傳入?yún)?shù)類型分別為int、String和BigDecimal,這些類型都是Java自身的類型,不需要將這些類的定義文件復(fù)制到本地,因此通過(guò)invoke方式調(diào)用服務(wù)時(shí),可以直接通過(guò)Object args傳給
38、服務(wù)方法。返回值同理,其也是java類型,因此不需要使用ObjectBean,使用invoke方法返回的就是String類型對(duì)象。示例2:服務(wù)方法:xxxMethod傳入?yún)?shù):int a,XxxBean bean返回參數(shù):String values調(diào)用說(shuō)明:服務(wù)方法的傳入?yún)?shù)int和XxxBean,XxxBean為服務(wù)發(fā)布方應(yīng)用系統(tǒng)自己定義的一個(gè)Java Bean,用于對(duì)數(shù)據(jù)的封裝,方便數(shù)據(jù)傳遞。用invoke方式調(diào)用此服務(wù)的方法,若不做處理服務(wù)消費(fèi)方應(yīng)有XxxBean類的類文件,否則消費(fèi)方無(wú)法構(gòu)造XxxBean的對(duì)象,作為輸入?yún)?shù)傳遞給服務(wù)發(fā)布方。為了解決在本地沒有XxxBean類文件仍然可
39、以調(diào)用此服務(wù)的問(wèn)題,我們?cè)O(shè)計(jì)了ObjectBean用來(lái)替換XxxBean,這樣invoke方法的args參數(shù)中的數(shù)據(jù)則變?yōu)閕nt和ObjectBean(而不是XxxBean),CSI會(huì)在服務(wù)端自動(dòng)將ObjectBean對(duì)象轉(zhuǎn)換成對(duì)應(yīng)的XxxBean對(duì)象。示例3:服務(wù)方法:xxxMethod傳入?yún)?shù):String str返回參數(shù):List resultlist中為XxxBean對(duì)象調(diào)用說(shuō)明:與上例一樣,XxxBean為服務(wù)發(fā)布方系統(tǒng)自己定義的Java Bean,使用Invoke方式調(diào)用該方法,CSI會(huì)自動(dòng)將XxxBean轉(zhuǎn)換成對(duì)應(yīng)的ObjectBean,并返回給服務(wù)消費(fèi)方。因此服務(wù)消費(fèi)方調(diào)用In
40、voke返回的的List中存放的實(shí)際上是ObjectBean對(duì)象,這些ObjectBean對(duì)象中存放的是相應(yīng)的XxxBean中的數(shù)據(jù)。CSI在處理服務(wù)返回值時(shí),在invoke模式下會(huì)自動(dòng)將非Java自身的對(duì)象轉(zhuǎn)換成相應(yīng)的ObjectBean。ObjectBean的使用方法創(chuàng)建ObjectBeanObjectBean提供了一個(gè)構(gòu)造函數(shù),構(gòu)造函數(shù)如下:public ObjectBean(String clzName)clzName為要替換的Java Bean的類的全類名例如:要替換的是XxxBean,其全類名為:cn.ccb.csi.demo.XxxBean,則創(chuàng)建ObjectBean的代碼為:O
41、bjectBean bean = new ObjectBean(“cn.ccb.csi.demo.XxxBean”);ObjectBean其他操作ObjectBean提供了若干復(fù)制和獲取值的操作,具體操作請(qǐng)參見相應(yīng)ObjectBean的API文檔。注意事項(xiàng)前面說(shuō)的“配置尋址服務(wù)信息”、“定義服務(wù)引用”涉及到得配置內(nèi)容都在同一個(gè)文件進(jìn)行。默認(rèn)的配置文件名稱為:reference-define.cr.xml,直接放到WEB-INF/classes下,CSI可以自動(dòng)加載此文件;用戶也可以根據(jù)需自己定義文件名,但請(qǐng)保持“cr.xml”的后綴名,用戶自定義的文件需要在J2EE應(yīng)用中的web.xml通過(guò)c
42、ontext-param進(jìn)行說(shuō)明,也可分成多個(gè)配置文件,但每個(gè)配置文件內(nèi)定義reference只能引用本文件內(nèi)定義的remote,不能引用其他配置文件定義的remote。示例如下:注意:這個(gè)名稱是固定的! csiReferenceDefineLocation /WEB-INF/classes/reference-define-ligy.xml/WEB-INF/classes/reference-define-wangsy.xml cn.ccb.sup.csi.server.web.ServiceLoadContextListenerCSI核心配置CSI的核心配置都體現(xiàn)在J2EE應(yīng)用中名為web
43、.xml的文件中,主要圍繞context-param、listener、servlet和servlet-mapping四塊內(nèi)容進(jìn)行。其中需要在自己web.xml中添加的context-param有: csiReferenceDefineLocation /WEB-INF/classes/reference-define-ligy.xml/WEB-INF/classes/reference-define-wangsy.xml此部分需要開發(fā)人員根據(jù)實(shí)際情況修改,其他不動(dòng)。 csiServiceDefineLocation /WEB-INF/classes/service-define-ligy.x
44、ml/WEB-INF/classes/service-define-wangsy.xml csiSystemConfigLocation /WEB-INF/classes/csi-system-config.xml配置Web ListenerCSI提供一個(gè)Web listener,使用時(shí)只需將此Listener配置到web.xml,由Listener負(fù)責(zé)加載相關(guān)配置,并初始化CSI運(yùn)行環(huán)境。配置如下: cn.ccb.sup.csi.server.web.ServiceLoadContextListener配置Http服務(wù)servletCSI提供的以http方式進(jìn)行的服務(wù)交互,是通過(guò)在web.x
45、ml中增加一種servlet實(shí)現(xiàn)的。應(yīng)用系統(tǒng)使用時(shí),需在自己的web.xml中直接增加下面的配置信息。 HttpRemoteCallServlet cn.ccb.sup.csi.server.channel.http.HttpCommonServiceServlet 1 HttpRemoteCallServlet /http.csi 配置WebService服務(wù)servletCSI提供的以webservice形式進(jìn)行的服務(wù)交互,是通過(guò)在web.xml中增加一種servlet進(jìn)行的。應(yīng)用系統(tǒng)使用時(shí),需在自己的web.xml中直接增加下面的配置信息。 WebserviceRemoteCallSer
46、vlet cn.ccb.sup.csi.server.channel.ws.AxisCommonServiceServlet 1 WebserviceRemoteCallServlet /csiservices/*總結(jié)除了上面所述的幾個(gè)配置文件,CSI還包括service-define.cs.xml和reference-define.cr.xml兩類配置文件,這兩類配置文件需要放置在具體應(yīng)用中的classpath下,即在WEB-INF/classes下。CSI日志日志實(shí)現(xiàn)方式CSI中的日志是采用common-logging實(shí)現(xiàn),它會(huì)自己尋找相關(guān)日志的實(shí)現(xiàn)類(如log4j等),開發(fā)人員只需正對(duì)日
47、志實(shí)現(xiàn)類進(jìn)行配置即可完成日志的配置。如果不進(jìn)行配置commons-logging會(huì)使用自己的日志實(shí)現(xiàn)類SimpleLog。日志格式CSI日志內(nèi)容如下:【當(dāng)前線程名】J2EE服務(wù)器當(dāng)前線程名【日志頭標(biāo)識(shí)】SUP2.0_Csi_Client|Server_FrameworkVersion【請(qǐng)求編號(hào)】為每次請(qǐng)求的唯一編號(hào) 【記錄時(shí)間】代表日志記錄的時(shí)間,格式:yyyy-MM-dd HH:mm:ss.SSS 【協(xié)議類型】H|W|E 備注:H代表http,W代表WebService,E代表EJB 【IP地址關(guān)系】發(fā)起方主機(jī)地址 目標(biāo)主機(jī)地址【命名空間+服務(wù)名+版本號(hào)方法名】 http:/cn.ccb:+
48、cn.ccb.sup.serviceA:+V1.0+#getUserName【行為】 T|E| EtcTrace|Exception|Etc 【類名】java類的名稱進(jìn)行日志記錄的JAVA類名稱【當(dāng)前內(nèi)存總量】以KByte為單位的數(shù)字 【當(dāng)前內(nèi)存空閑量】以KByte為單位的數(shù)字 【Phase描述】用于描述當(dāng)前Phase【Interceptor描述】用于描述當(dāng)前Interceptor 【信息】日志中的Message或其他想記錄的信息等等。【異常棧信息】 Exception的堆棧信息。示例:2009-7-13 17:19:37 INFO(LoggerUtil.java:56) ExecuteThr
49、ead: 24 for queue: weblogic.kernel.DefaultSUP_CSI_Server_00c03bca22734d5801227369018f00182009-07-13 17:19:37.406http4-4http:/cn.ccb:cn.ccb.sup.csi.TestPerformancePojoHttpXml:#getSelfTcn.ccb.sup.csi.server.invoker.impl.DefaultServiceServerInvokerImpl9479372848307120nullnullServer invoke begin./*null*
50、/2009-7-13 17:19:37 INFO(LoggerUtil.java:56) ExecuteThread: 21 for queue: weblogic.kernel.DefaultSUP_CSI_Client_00c03bca22734d580122736901fc00192009-07-13 17:19:37.546http4-4http:/cn.ccb:cn.ccb.sup.csi.TestPerformanceSpringHttpXml:#getSelfTcn.ccb.sup.csi.client.invoker.impl.DefaultServiceClientInvok
51、erImpl9479372844880760(ResponseConvertPhase)ServiceClientResponseConvertInterceptorClient invoke begin.日志使用建議應(yīng)用系統(tǒng)在配置日志時(shí)建議將CSI的日志使用單獨(dú)一個(gè)文件進(jìn)行記錄,不要與應(yīng)用日志混合在一起,以方便跟蹤和分析問(wèn)題。安裝部署為了方便部署和使用,提供了CSI的發(fā)布包 后面見到“發(fā)布包”都是指CSI的發(fā)布包,其結(jié)構(gòu)如下圖所示:其各部分內(nèi)容如下:3rd_party:存放CSI所依賴的第三方Jar包c(diǎn)onfig:存放用戶所需配置的配置文件模板和相應(yīng)的xsd文件。core:存放CSI的Jar
52、包doc:存放CSI相關(guān)的說(shuō)明文檔。publish_ejb:存放ejb的發(fā)布腳本,該腳本根據(jù)不同應(yīng)用服務(wù)器發(fā)來(lái)產(chǎn)生不同的ejb包。 下面根據(jù)不同的應(yīng)用服務(wù)器來(lái)分別介紹CSI的安裝和部署。Tomcat(5.0以上)以下分別對(duì)服務(wù)發(fā)布方和服務(wù)消費(fèi)方的安裝部署進(jìn)行描述:服務(wù)發(fā)布方由于Tomcat只支持提供Web Container,因此使用Tomcat作為應(yīng)用服務(wù)器無(wú)法將業(yè)務(wù)功能以EJB形式發(fā)布,只能通過(guò)WebService和Http兩種方式。具體安裝部署步驟如下:復(fù)制第三方Jar包:將發(fā)布包中“3rd_party”下的所有jar包復(fù)制到web應(yīng)用的WEB-INF/lib下復(fù)制CSI Jar包:將“
53、core”下sup-csi-front.jar和sup-csi-core.jar復(fù)制到web應(yīng)用的WEB-INF/lib目錄下。修改Web.xml配置文件:修改方式參見: REF _Ref233628683 h * MERGEFORMAT CSI核心配置。服務(wù)消費(fèi)方作為服務(wù)消費(fèi)方可以使用使用服務(wù)發(fā)布方通過(guò)Http、WebService方式發(fā)布的服務(wù)。服務(wù)消費(fèi)方安裝部署步驟如下:復(fù)制第三方Jar包:將發(fā)布包中“3rd_party”下的所有jar包復(fù)制到web應(yīng)用的WEB-INF/lib下復(fù)制CSI Jar包:將“core”下sup-csi-front.jar和sup-csi-core.jar復(fù)制
54、到Web應(yīng)用程序的WEB-INF/lib中。若是Web應(yīng)用則建議修改相應(yīng)的web.xml,指定“引用”定義文件的位置。配置方式見 REF _Ref233642652 h * MERGEFORMAT CSI核心配置。Weblogic (8.1)以下分別對(duì)服務(wù)發(fā)布方和服務(wù)消費(fèi)方的安裝部署進(jìn)行描述:服務(wù)發(fā)布方根據(jù)應(yīng)用是web應(yīng)用(發(fā)布結(jié)構(gòu)為War)還是J2EE應(yīng)用(發(fā)布結(jié)構(gòu)為ear)應(yīng)用,安裝部署會(huì)有所差異,下面會(huì)分別進(jìn)行描述。復(fù)制第三方Jar包:復(fù)制發(fā)布包中“3rd_party”下除了“stax-api-1.0.1.jar”外的其它所有Jar包。若應(yīng)用為web應(yīng)用,則將復(fù)制的Jar包存放到web應(yīng)
55、用的WEB-INF/lib目錄下。若應(yīng)用為J2EE應(yīng)用,則將復(fù)制的jar包存放到j(luò)2ee應(yīng)用的APP-INF/lib目錄下,如果沒有這個(gè)目錄則創(chuàng)建之。復(fù)制” stax-api-1.0.1.jar”:將該jar包復(fù)制并存放在%WL_HOME%/server/lib下。修改startWeblogic.cmd(startWeblogic.sh)中的classpath:將剛復(fù)制的” stax-api-1.0.1.jar”設(shè)置在classpath中,在classpath中須放置在%WEBLOGIC_CLASSPATH%之前,例如:CLASSPATH=%WL_HOME%serverlibstax-api-
56、1.0.1.jar;%WEBLOGIC_CLASSPATH%;.復(fù)制csi的jar包:復(fù)制發(fā)布包中的“core”下的sup-csi-core.jar、sup-csi-front.jar兩個(gè)jar包。若應(yīng)用為web應(yīng)用,則將復(fù)制的jar存放web應(yīng)用的WEB-INF/lib目錄下。若應(yīng)用為J2EE應(yīng)用,則將復(fù)制的jar包存放到j(luò)2ee應(yīng)用的APP-INF/lib目錄下。若應(yīng)用需要通過(guò)EJB的方式發(fā)布服務(wù)則必須部署安裝相應(yīng)的ejb,具體步驟如下:在發(fā)布包中的publish_ejb目錄中運(yùn)行createejb.cmd (createejb.sh)腳本,并輸入jndi的名稱,如:createejb j
57、ndiname1234;此處錄入的jndi的名稱為lookup時(shí)所用的jndi名稱。復(fù)制產(chǎn)生的sup-csi-ejb.jar文件到j(luò)2ee應(yīng)用的根目錄下。修改application.xml,在其中加入如下配置信息:sup-csi-ejb.jar修改相應(yīng)web應(yīng)用的web.xml,修改內(nèi)容見 REF _Ref233707862 h * MERGEFORMAT CSI核心配置。服務(wù)消費(fèi)方根據(jù)應(yīng)用是web應(yīng)用(發(fā)布結(jié)構(gòu)為War)還是J2EE應(yīng)用(發(fā)布結(jié)構(gòu)為ear)應(yīng)用,安裝部署會(huì)有所差異,下面會(huì)分別進(jìn)行描述。復(fù)制第三方Jar包:復(fù)制發(fā)布包中“3rd_party”下除了“stax-api-1.0.1.
58、jar”外的其它所有Jar包。若應(yīng)用為web應(yīng)用,則將復(fù)制的Jar包存放到web應(yīng)用的WEB-INF/lib目錄下。若應(yīng)用為J2EE應(yīng)用,則將復(fù)制的jar包存放到j(luò)2ee應(yīng)用的APP-INF/lib目錄下,如果沒有這個(gè)目錄則創(chuàng)建之。復(fù)制” stax-api-1.0.1.jar”:將該jar包復(fù)制并存放在%WL_HOME%/server/lib下。修改startWeblogic.cmd(startWeblogic.sh)中的Classpath:將剛復(fù)制的” stax-api-1.0.1.jar”設(shè)置在classpath中,在classpath中須放置在%WEBLOGIC_CLASSPATH%之前
59、,例如:CLASSPATH=%WL_HOME%serverlibstax-api-1.0.1.jar;%WEBLOGIC_CLASSPATH%;.復(fù)制csi的jar包:復(fù)制發(fā)布包中的“core”下的sup-csi-core.jar、sup-csi-front.jar兩個(gè)jar包。若應(yīng)用為web應(yīng)用,則將復(fù)制的jar存放web應(yīng)用的WEB-INF/lib目錄下。若應(yīng)用為J2EE應(yīng)用,則將復(fù)制的jar包存放到j(luò)2ee應(yīng)用的APP-INF/lib目錄下。修改相應(yīng)web應(yīng)用的web.xml,修改內(nèi)容見 REF _Ref233707862 h * MERGEFORMAT CSI核心配置。Weblogic
60、 (9.2)以下分別對(duì)服務(wù)發(fā)布方和服務(wù)消費(fèi)方的安裝部署進(jìn)行描述:服務(wù)發(fā)布方根據(jù)應(yīng)用是web應(yīng)用(發(fā)布結(jié)構(gòu)為War)還是J2EE應(yīng)用(發(fā)布結(jié)構(gòu)為ear)應(yīng)用,安裝部署會(huì)有所差異,下面會(huì)分別進(jìn)行描述。復(fù)制第三方Jar包:復(fù)制發(fā)布包中“3rd_party”下所有Jar包。若應(yīng)用為web應(yīng)用,則將復(fù)制的Jar包存放到web應(yīng)用的WEB-INF/lib目錄下。若應(yīng)用為J2EE應(yīng)用,則將復(fù)制的jar包存放到j(luò)2ee應(yīng)用的APP-INF/lib目錄下,如果沒有這個(gè)目錄則創(chuàng)建之。.復(fù)制csi的jar包:復(fù)制發(fā)布包中的“core”下的sup-csi-core.jar、sup-csi-front.jar兩個(gè)jar
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度木結(jié)構(gòu)建筑維護(hù)木工承包合同范本3篇
- 二零二五年度婚慶服務(wù)市場(chǎng)前景分析婚慶協(xié)議合同3篇
- 二零二五年度木材采購(gòu)與木材行業(yè)技術(shù)培訓(xùn)合同3篇
- 2025年度個(gè)人二手房交易資金監(jiān)管合同范本4篇
- 二零二五年度智能停車場(chǎng)車牌租賃與安全管理合同4篇
- 2025版民間借貸合同要點(diǎn)識(shí)別并規(guī)避四種借款人風(fēng)險(xiǎn)4篇
- 二零二五年度棉布面料環(huán)保認(rèn)證與檢測(cè)服務(wù)合同4篇
- 二零二五年度民爆物品儲(chǔ)存安全責(zé)任合同4篇
- 2025年度汽車文化體驗(yàn)館租賃合同4篇
- 2025年物業(yè)管理公司委托管理合同范本3篇
- 遼寧省撫順五十中學(xué)2024屆中考化學(xué)全真模擬試卷含解析
- 2024年湖南汽車工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 2024年中國(guó)科學(xué)技術(shù)大學(xué)少年創(chuàng)新班數(shù)學(xué)試題真題(答案詳解)
- 家長(zhǎng)心理健康教育知識(shí)講座
- GB/T 292-2023滾動(dòng)軸承角接觸球軸承外形尺寸
- 軍人結(jié)婚函調(diào)報(bào)告表
- 民用無(wú)人駕駛航空器實(shí)名制登記管理規(guī)定
- 北京地鐵6號(hào)線
- 航空油料計(jì)量統(tǒng)計(jì)員(初級(jí))理論考試復(fù)習(xí)題庫(kù)大全-上(單選題匯總)
- 諒解書(標(biāo)準(zhǔn)樣本)
評(píng)論
0/150
提交評(píng)論