版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一使用Axis和XFire發(fā)布Web Service21.1 準(zhǔn)備工作21.1.1 新建工程21.1.2 axis依賴文件31.1.3 XFire依賴文件31.2 Axis發(fā)布Web Service41.2.1 傳遞簡單數(shù)據(jù)類型的Web Service41.2.2 帶自定義對象傳遞的Web Service81.3 XFire發(fā)布Web Services101.3.1 傳遞簡單數(shù)據(jù)類型的Web Service10傳遞復(fù)雜數(shù)據(jù)類型的Web Service12附錄: 1Server的結(jié)構(gòu)16二調(diào)用Web Services172.1 準(zhǔn)備工作172.1.1 新建工程172.1.2 啟動Tomcat上發(fā)
2、布的1Server服務(wù)172.2 Axis發(fā)布的Web Service調(diào)用方式182.2.1 Dynamic Invocation Interface (DII)方式182.2.2 Dynamic Proxy方式192.2.3 Stubs方式20調(diào)用XFire發(fā)布的Web Service22服務(wù)以jar包形式發(fā)布的時候直接調(diào)用232.3.2 使用Axis的Client包232.3.3 使用Xfire的Client包24附錄2:2Client目錄結(jié)構(gòu)31一 使用Axis和XFire發(fā)布Web Service準(zhǔn)備工作Axis主頁:pAxis下載:XFire主頁:dXFire下載:去以上站點(diǎn)下載ax
3、is最新包 和XFire最新包,包內(nèi)有axis和XFire依賴的其他jar包。1.1.1 新建工程axis依賴文件1.XFire依賴文件Axis發(fā)布Web Service傳遞簡單數(shù)據(jù)類型的Web Service1. 把Axis依賴的jar包放入lib文件夾下.2. 在web.xml中加入如下:<!- * axis ws start * -><listener><listener-class></listener-class></listener><servlet><servlet-name>AxisServle
4、t</servlet-name><servlet-class></servlet-class></servlet><servlet><servlet-name>AdminServlet</servlet-name><servlet-class></servlet-class><load-on-startup>100</load-on-startup></servlet><servlet><servlet-name>SOAPMon
5、itorService</servlet-name><servlet-class></servlet-class><init-param><param-name>SOAPMonitorPort</param-name><param-value>5001</param-value></init-param><load-on-startup>100</load-on-startup></servlet><servlet-mapping><
6、servlet-name>AxisServlet</servlet-name><url-pattern>/servlet/AxisServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>*.jws</url-pattern></servlet-mapping><servlet-mapping><
7、;servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>SOAPMonitorService</servlet-name><url-pattern>/SOAPMonitor</url-pattern></servlet-mapping><!- uncomment thi
8、s if you want the admin servlet -><!-<servlet-mapping><servlet-name>AdminServlet</servlet-name><url-pattern>/servlet/AdminServlet</url-pattern></servlet-mapping>-><session-config><!- Default to 5 minute session timeouts -><session-timeout&g
9、t;5</session-timeout></session-config><!- currently the W3C havent settled on a media type for WSDL;/TR/2003/WD-wsdl12-20030303/#ietf-draftfor now we go with the basic 'it's XML' response -><mime-mapping><extension>wsdl</extension><m
10、ime-type>text/xml</mime-type></mime-mapping><mime-mapping><extension>xsd</extension><mime-type>text/xml</mime-type></mime-mapping><!- * axis ws end * ->3. 發(fā)布到Tomcat5.0+ 啟動Tomcat服務(wù)啟動的時候若出現(xiàn)下面錯誤。這個是因?yàn)榕渲梦募]有,沒有關(guān)系。訪問http:/localhost:8080/1Server/ser
11、vlet/AxisServlet 查看Axis是否配置成功。出現(xiàn)該圖表示配置成功。4.package .freshpower.services;publicclass HelloAxis public String sayHello(String name)System.out.println("-axis1 被調(diào)用-");return"Hello! "+name;5.內(nèi)容如下:<deployment xmlns="/axis/wsdd/" xmlns:java="http:/x
12、/axis/wsdd/providers/java"><service name="HelloAxis" provider="java:RPC"><parameter name="className" value=".freshpower.services.HelloAxis"/><parameter name="allowedMethods" value="*"/></service>
13、</deployment>在,內(nèi)容如下:echo.echo 生成的server-config.wsdd在Tomcat發(fā)布的應(yīng)用下 echo.set Axis_Lib=D:projects1ServerwebappWEB-INFlibset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Axis_Servlet=http:/localhost:8080/1Server/servlet/AxisServletpause6. 在執(zhí)行完后去%TOMCAT_HOME%webapps1ServerWEB-INF文件夾下找到文件,把該文件復(fù)制到1Serv
14、erwebappWEB-INF下。我們打開該文件可以看到下面段落:這就是我們剛才發(fā)布的web service的描述段落。7. 刷新http:/localhost:8080/1Server/servlet/AxisServlet查看Web Service列表。點(diǎn)擊(wsdl)可以查看該Web Service對應(yīng)的wsdl文件。 帶自定義對象傳遞的WebService1. 新建User.java文件package .freshpower.bean;publicclass User public User()public User(String name,String age) =
15、 name;this.age = age;public String name;public String age;public String getName() returnname;publicvoid setName(String name) = name;public String getAge() returnage;publicvoid setAge(String age) this.age = age;2. 新建HelloAxisObj.javapackage .freshpower.services;import java.util.ArrayList;im
16、port java.util.List;import .freshpower.bean.User;publicclass HelloAxisObj public User getUser(User user)System.out.println("-axis2 被調(diào)用-");user.setName("ujjboy");user.setAge("22");return user;public List<String> getList()System.out.println("-axis2 被調(diào)用-");
17、List<String> list = new ArrayList<String>();list.add("aaaaaaa");list.add("bbbbbbb");list.add("ccccccc");return list;3. Web Service。直接插入下面段落來發(fā)布。<service name="HelloAxisObj" provider="java:RPC"><parameter name="allowedMethods&
18、quot; value="*"/><parameter name="className" value=".freshpower.services.HelloAxisObj"/></service><beanMapping qname="scNS:List" xmlns:scNS="urn:BeanService" languageSpecificType="java:java.util.List" /><beanMapping
19、qname="scNS:User" xmlns:scNS="urn:BeanService" languageSpecificType="java:.freshpower.bean.User" />4. 重啟Tomcat服務(wù)器。5. 刷新http:/localhost:8080/1Server/servlet/AxisServlet 查看Web Service列表。點(diǎn)擊(wsdl)可以查看該Web Service對應(yīng)的wsdl文件。XFire發(fā)布WebServices1.3.1 傳遞簡單數(shù)據(jù)類型的Web Service1. 把X
20、Fire依賴的jar包放入lib文件夾下。2. 如下代碼:<!- * xfire start * -><servlet><servlet-name>XFireServlet</servlet-name><servlet-class></servlet-class><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>XFireServlet</servlet-
21、name><url-pattern>/servlet/XFireServlet/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/service/*</url-pattern></servlet-mapping><!- * Xfire end * ->3. 編寫程序代碼首先編寫一個功能的接口類。package .
22、freshpower.services;publicinterface HelloXfire public String sayHello(String name);再編寫一個功能的接口實(shí)現(xiàn)類。package .freshpower.services;publicclass HelloXfireImpl implements HelloXfirepublic String sayHello(String name) System.out.println("-xfire1 被調(diào)用-");return"Hello! "+name;4. 在src下或者直接在w
23、ebappWEB-INF下文件,內(nèi)容如下:<?xml version="1.0" encoding="UTF-8"?><beans><service xmlns="/config/1.0"><name>HelloXfire</name><namespace></namespace><serviceClass></serviceClass><implementationClas
24、s></implementationClass></service></beans>5. 重啟Tomcat服務(wù) 出現(xiàn)如下圖加載信息代表發(fā)布正確完成。6. 訪問http:/localhost:8080/1Server/service/ 查看Web Service列表和wsdl文件。點(diǎn)擊wsdl就可以查看它的wsdl描述文件。傳遞復(fù)雜數(shù)據(jù)類型的Web Service1. 了解XFire的綁定機(jī)制Aegis首先說明,Aegis為XFire默認(rèn)的綁定方式,那么何時需要綁定?Aegis支持的類型1).基本類型:int,double,float,long,byte
25、,short,String,decimal2).數(shù)組(Array)3).集合類型(Collection)4)l.Calendar, java.sql.Timestamp, java.sql.Date, 5).XML:org.w3c.dom.Docmument, org.jdom.Element, XMLStreamReader, XML文本6).包含以上類型的自定義類型Aegis需要綁定的類型1).集合類型(Collection)2).包含集合類型的自定義類型當(dāng)使用JDK1.4時,或者是使用了JDK1.5及以上版本但是沒有使用泛型的時候、當(dāng)遇到需要映射POJO或配置WebService接口方法
26、返回類型(如集合類型)時,需要進(jìn)行綁定,此時aegis的綁定為建立.aegis.xml的文件。2. 編寫接口類HelloXfireObj.javapackage .freshpower.services;import java.util.List;import .freshpower.bean.User;publicinterface HelloXfireObj public User getUser(User user);public List<String> getList();編寫接口實(shí)現(xiàn)類package .freshpower.services;import java.ut
27、il.ArrayList;import java.util.List;import .freshpower.bean.User;publicclass HelloXfireObjImpl implements HelloXfireObjpublic User getUser(User user)System.out.println("-Xfire2 被調(diào)用-");user.setName("ujjboy");user.setAge("22");return user;public List<String> getList(
28、)System.out.println("-Xfire2 被調(diào)用-");List<String> list = new ArrayList<String>();list.add("aaaaaaa");list.add("bbbbbbb");list.add("ccccccc");return list;3. 綁定數(shù)據(jù)類型。新建與接口類同名的.aegis.xml文件 如下圖:文件內(nèi)容如下:<?xml version="1.0" encoding="UTF-8
29、"?><mappings><mapping><method name="getUser"><parameter index="0" componentType=".freshpower.bean.User" /><return-type componentType=".freshpower.bean.User" /></method></mapping></mappings>注意 List里面帶的是簡單數(shù)
30、據(jù)類型就不用綁定,帶的是復(fù)雜類型就用綁定類型。而且List一定要聲明所包含的對象。例如List<User>,List<int>等。4. 修改webappWEB-INFservices.xml 發(fā)布Web Service。和上例沒什么區(qū)別,在文件中增加節(jié)點(diǎn):<service xmlns="/config/1.0"><name>HelloXfireObj</name><namespace></namespace><serviceClass&g
31、t;</serviceClass><implementationClass></implementationClass></service>5. 重啟Tomcat 6. 訪問http:/localhost:8080/1Server/service/ 查看Web Service列表和wsdl文件。附錄1: 1Server工程的結(jié)構(gòu)二 調(diào)用Web Services2.1 準(zhǔn)備工作2.1.1 新建工程新建一個2Client的Web Project 把剛才1Server的lib下的jar包復(fù)制過來.2.1.2 啟動Tomcat上發(fā)布的1Server服務(wù)1
32、Server服務(wù)上應(yīng)該有axis和XFire發(fā)布的4個Web Service等待調(diào)用。http:/localhost:8080/1Server/services/HelloAxis?wsdlhttp:/localhost:8080/1Server/services/HelloAxisObj?wsdlhttp:/localhost:8080/1Server/service/HelloXfire?wsdlhttp:/localhost:8080/1Server/service/HelloXfireObj?wsdl2.2 Axis發(fā)布的Web Service調(diào)用方式Axis支持三種方法:ü
33、 Dynamic Invocation Interface (DII)方式ü Dynamic Proxy方式 ü Stubs方式 2.2.1 Dynamic Invocation Interface (DII)方式該方式可以不用生成本地客戶端,直接從wsdl文件中得到操作方法,傳遞的參數(shù)等。然后按照下面的1到6步寫代碼就可以。step1: 創(chuàng)建一個Service實(shí)例,注意是必須的!<br>step2: 創(chuàng)建Call實(shí)例,也是必須的!<br>step3: 為Call設(shè)置服務(wù)的位置 操作的方法名<br>step4: 映射要傳遞自定義類型 設(shè)置
34、返回類型等(可選)<br>step5: 為方法增加參數(shù),傳幾個參數(shù)寫幾個(可選)<br>step6: 用參數(shù)數(shù)組調(diào)用Web Service<br>package .freshpower.client;import space.QName;import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;p
35、ublicclass TestAxis1 publicstaticvoid main(String args) throws Exception /*step1:創(chuàng)建一個Service實(shí)例,注意是必須的!*/Service service = new Service(); /*step2:創(chuàng)建Call實(shí)例,也是必須的!*/Call call = (Call) service.createCall();/*step3:為Call設(shè)置服務(wù)的位置操作方法名*/call.setTargetEndpointAddress(new .URL("http:/localhost:8080/1Serv
36、er/services/HelloAxis");call.setOperationName("sayHello");/*step4映射要傳遞自定義類型設(shè)置返回類型等(可選)如果返回的是自定義類型也要映射*/call.setReturnType(XMLType.XSD_STRING);/*step5:為方法增加參數(shù),傳幾個參數(shù)寫幾個*/call.addParameter( new QName("/","name"),XMLType.XSD_STRING,ParameterMode.IN
37、 );/*step6:用參數(shù)數(shù)組調(diào)用Web Service*/String name = "freshpower"String result = (String) call.invoke(new Objectname);System.out.println(result);執(zhí)行的結(jié)果是:2.2.2 Dynamic Proxy方式該方法首先是在本地虛擬一個服務(wù)端Web Service的接口。該接口繼承java類。package .freshpower.client;import java.rmi.Remote;import java.rmi.RemoteException;p
38、ublicinterface TestAxis2Iface extends Remote public String sayHello(String name) throws RemoteException;然后我們再寫一個代理服務(wù)在本地調(diào)用這個接口類。package .freshpower.client;import .MalformedURLException;import .URL;import java.rmi.RemoteException;import space.QName;import javax.xml.rpc.Service;import jav
39、ax.xml.rpc.ServiceException;import javax.xml.rpc.ServiceFactory;publicclass TestAxis2Proxy publicstaticvoid main(String args) throws ServiceException, MalformedURLException, RemoteException String wsdlUrl = "http:/localhost:8080/1Server/services/HelloAxis?wsdl"String nameSpaceUri = "h
40、ttp:/localhost:8080/1Server/services/HelloAxis"String serviceName = "HelloAxisService"/從wsdl文件中得到String portName = "HelloAxis"/從wsdl文件中得到ServiceFactory serviceFactory = (ServiceFactory) ServiceFactory.newInstance();Service service = serviceFactory.createService(new URL(wsdlU
41、rl), new QName(nameSpaceUri,serviceName);TestAxis2Iface proxyClient = (TestAxis2Iface) service.getPort(new QName(nameSpaceUri, portName),TestAxis2Iface.class);System.out.println(proxyClient.sayHello("freshpower");運(yùn)行結(jié)果是:2.2.3 Stubs方式Stubs方式是使用axis自帶的WSDL2JAVA根據(jù)發(fā)布的WSDL文件生成本地客戶端,然后直接在本地調(diào)用。首先學(xué)
42、習(xí)下WSDL2JAVA工具。我們新建一個wsdl2java.bat 內(nèi)容如下:echo -echo 設(shè)置Output_Path設(shè)置為你要生成的路徑echo Package設(shè)置為生成文件的包路徑echo 最后是wsdl可以是文件路徑 可以是URLecho -pauseset Axis_Lib=D:projects2ClientwebappWEB-INFlibset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Output_Path=D:projects2Clientsrcset Package=AxisObj%Java_Cmd% org.apache.
43、axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http:/localhost:8080/1Server/services/HelloAxisObj?wsdl我們以第二個傳遞對象的WebService為例。執(zhí)行批處理生成客戶端后,我們來看下目錄結(jié)構(gòu)。生成客戶端后,我們就有了用戶自定義的User對象類,和一些web service的相關(guān)類(注意:,不用自動生成的)。有了本地客戶端,調(diào)用就十分簡單。我們可以利用客戶端使用前面介紹DII方式進(jìn)行調(diào)用,也可以使用stubs方式調(diào)用。Stubs的調(diào)用方式十分簡單:服務(wù)名Service service = n
44、ew 服務(wù)名ServiceLocator();服務(wù)名Stub client = (服務(wù)名Stub) service.get服務(wù)名();System.out.println(client.方法(參數(shù).);程序代碼如下:package .freshpower.client;import .freshpower.autoClient.HelloAxisObj.*;publicclass TestAxisObj2 publicstaticvoid main(String args) throws Exception HelloAxisObjService service = new HelloAxis
45、ObjServiceLocator();HelloAxisObjSoapBindingStub client = (HelloAxisObjSoapBindingStub) service.getHelloAxisObj();/測試結(jié)果User a = new User("11", "AAAA");System.out.println(client.getUser(a).getName();List list = client.getList();System.out.println(list.toString();執(zhí)行后 我們發(fā)現(xiàn)getUser方法是正
46、確的,而getList方法是錯誤的呢?看了錯誤原來自動生成的客戶端里面所有的getList相關(guān)方法都是使用的是.List類,。所以需要調(diào)整下自動生成的代碼和客戶端代碼。首先客戶端HelloAxisObj2.java需要調(diào)整。其次要把HelloAxisObj_PortType.java和HelloAxisObjSoapBindingStub.java中的“”全部換成“”,保存。重新執(zhí)行后沒提示錯誤。成功。調(diào)用XFire發(fā)布的Web ServiceXfire的調(diào)用也有很多,但是都大同小異:主要有:1. 服務(wù)以jar包形式發(fā)布的時候 直接調(diào)用2. 使用AXIS的Client 包ü Dyna
47、mic Invocation Interface (DII)ü Stubs方式 (wsdl2java生成客戶端)3. 使用Xfire的Client包ü 通過WSDL文件直接調(diào)用程序ü WsGen(Ant)生成客戶端調(diào)用程序ü MyEclipse插件生成客戶端調(diào)用程序服務(wù)以jar包形式發(fā)布的時候 直接調(diào)用當(dāng)服務(wù)端以jar包形式發(fā)布,我們就相當(dāng)于有了客戶端的接口類和其自定義對象類。(無接口實(shí)現(xiàn)類)。為了節(jié)省時間,我們就直接在1Server下新建一個Client,相當(dāng)于擁有服務(wù)端的客戶端。代碼如下:package .freshpower.client;impo
48、rt .MalformedURLException;import java.rmi.RemoteException;import org.codehaus.xfire.XFireFactory;import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.binding.ObjectServiceFactory;import .freshpower.services.HelloXfire;publiccl
49、ass TestXfire4jar publicstaticvoid main(String args) throws RemoteException,MalformedURLException Service srvcModel = new ObjectServiceFactory().create(HelloXfire.class,null,"",null);XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire();String wsURL = &quo
50、t;http:/localhost:8080/1Server/service/HelloXfire"HelloXfire client = (HelloXfire) factory.create(srvcModel, wsURL);System.out.print(client.sayHello("freshpower");運(yùn)行后得到結(jié)果:2.3.2 使用Axis的Client包只需要修改下wsdl2java.bat中的生成包地址和wsdl文件地址。(參見)刷新下工程目錄,我們就能發(fā)現(xiàn)剛生成的客戶端文件。有了客戶端文件,我們就可以使用DII或者Stubs方式就行調(diào)
51、用。(參見2.2.1 Dynamic Invocation Interface (DII)方式和2.2.3 Stubs方式)2.3.3 使用Xfire的Client包通過WSDL文件直接調(diào)用程序該方式類似于axis的DII調(diào)用方式。只需要得到wsdl文件后放在src或者WEB-INFclasses下即可。也可以通過wsdl的URL地址調(diào)用。package .freshpower.client;import java.io.IOException;import .URL;import org.codehaus.xfire.client.Client;import org.springframew
52、ork.core.io.ClassPathResource;import org.springframework.core.io.Resource;publicclass TestXfire1 publicstaticvoid main(String args) throws IOException, Exception /本地的寫法/String wsdl = "HelloXfire.wsdl" / 對應(yīng)的WSDL文件/Resource resource = new ClassPathResource(wsdl);/Client client = new Client(r
53、esource.getInputStream(), null); /根據(jù)WSDL創(chuàng)建客戶實(shí)例/URL的寫法Client client = new Client(new URL("http:/localhost:8080/1Server/service/HelloXfire?wsdl");/ 調(diào)用特定的Web Service方法Object results = client.invoke("sayHello", new Object"freshpower");System.out.println(results0);調(diào)用結(jié)果為.2WsG
54、en(Ant)生成客戶端調(diào)用程序WsGen是Xfire提供的一個Ant Task。我們可以使用Ant輕松實(shí)現(xiàn)生成Xfire自己的客戶端。在程序下新建Ant文件夾,內(nèi)有bulid.bat和bulid.xml兩個文件,如圖:build.xml內(nèi)容如下:<?xml version="1.0" encoding="UTF-8" ?><project name="XFire-WsGen" basedir="./" default="createFile"><!- 設(shè)置clas
55、spath -><property name="lib" value="$basedir/webapp/WEB-INF/lib" /><path id="myclasspath"><fileset dir="$lib"><include name="*.jar" /></fileset><pathelement location="$createFile" /></path><!- 指定生成src文件地址 wsdl文件地址(可是是本地) 包路徑-><property name="code_path" value="$basedir/src" /><property name="wsdl_path" value="http:/localhost:8080/1Server/service/HelloXfire?wsdl" /><property name="code_package" value="" /><
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版企業(yè)借款合同:基于股東會決議的范本3篇
- 二零二五版食堂泔水處理與環(huán)保設(shè)備銷售合同2篇
- 2025年度電子商務(wù)平臺承包招商合同范本3篇
- 二零二五版大棚租賃合同綠色環(huán)保附加條款3篇
- 2025年度安全生產(chǎn)風(fēng)險(xiǎn)評估與管理合同集3篇
- 年度鈷基及鈷鎳基競爭策略分析報(bào)告
- 2025年暑期實(shí)習(xí)崗位勞動合同范本3篇
- 2025年度專業(yè)舞臺搭建租賃合同3篇
- 2024-2025學(xué)年高中歷史課時分層作業(yè)十二5.1科學(xué)社會主義的奠基人馬克思含解析新人教版選修4
- 2025年度環(huán)保節(jié)能零星工程設(shè)計(jì)與施工一體化合同4篇
- 三年級上冊語文作文課件-《我學(xué)會了……》(共15張PPT)-全國通用
- 氣管切開病人的觀察與護(hù)理【版直接用】課件
- 班組退場確認(rèn)書(參考文本)
- 質(zhì)量系統(tǒng) GMP 實(shí)施指南
- 住房公積金繳存情況專項(xiàng)審計(jì)報(bào)告
- 猴痘病毒資料
- 《鼻部應(yīng)用解剖》PPT課件
- 第二章 熱力學(xué)基本定律
- 義務(wù)教育教科書英語Go for it七年級上冊單詞表
- 第一章 電力系統(tǒng)潮流計(jì)算1
- 粉末丁腈橡膠使用方法
評論
0/150
提交評論