版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用JAVA開(kāi)發(fā)WEB Service一 學(xué)習(xí)前的準(zhǔn)備開(kāi)發(fā)環(huán)境 JBOSS4.05+axis1.4+JDK1.5axis1.4下載地址: ,選擇axis-bin-1_4.zip 所需要的JAR包:二 部署axis以我們CreateGWS405產(chǎn)品為例,在產(chǎn)品serverdefaultdeploy目錄下新建一個(gè)應(yīng)用,比如叫myService.war。在里面新建文件夾“WEB-INF”,將axis1.4以下目錄中的web.xml文件拷貝到“WEB-INF”下?!癮xis-bin-1_4axis-1_4webappsaxisWEB-INF“。然后將jar包拷貝到產(chǎn)品serverdefaultlib下。
2、至此部署完畢。三 開(kāi)發(fā)webService服務(wù)端 用編輯器編寫(xiě)一個(gè)簡(jiǎn)單的服務(wù)類(lèi),代碼如下:import java.util.*;import java.text.*;public class SayHello public String say(String name)System.out.println("call webservice say.");return " Hello " + name;將該類(lèi)復(fù)制到myService.war中與“WEB-INF”同級(jí)目錄,然后更改其名字為”SayHello.jws”。啟動(dòng)CreateGWS405,在瀏覽器地
3、址輸入打開(kāi)頁(yè)面后你會(huì)看到 Click to see the WSDL <-點(diǎn)擊鏈接,如果你上面的步驟都正常,類(lèi)也沒(méi)有帶其他包的話,那么就生成了wsdl了。至此webService服務(wù)端發(fā)布成功,接下來(lái)就是編寫(xiě)客戶(hù)端了。四 開(kāi)發(fā)webService客戶(hù)端。(DLL方式) 這里為了方便測(cè)試,我們就以CreateGWS405產(chǎn)品為客戶(hù)端,在create.war下新建一個(gè)JSP頁(yè)面,代碼如下:String urlname = ""Service s = new Service();Call call = (Call) s.createCall();/要調(diào)用的方法名稱(chēng)call.
4、setOperationName("say");call.setTargetEndpointAddress(urlname);/方法傳入一個(gè)String型參數(shù),返回值也是StringString val = (String) call.invoke(new Object "haha" );System.out.println(val);需要導(dǎo)入:import ll;import org.apache.axis.client.Service;至此一個(gè)簡(jiǎn)單的客戶(hù)端就編寫(xiě)好了。上面服務(wù)端的方法參數(shù)是String,返回值也是String,而實(shí)際業(yè)務(wù)中可能還需要以
5、int,boolean等類(lèi)型做參數(shù),而且參數(shù)不止一個(gè)。返回值有時(shí)是int有時(shí)又是集合ArrayList那該怎么做呢,請(qǐng)看下面這個(gè)服務(wù)端代碼import java.util.*;import java.text.*;public class SayHello public String say(String name)System.out.println("call webservice say.");return " Hello " + name;public ArrayList getList(String str) ArrayList strs =
6、new ArrayList(); System.out.println("call webservice getList."); strs.add("A"); strs.add("B"); strs.add("C"); strs.add(str); return strs;public String getStrs(String str,int a) System.out.println("call webservice getStrs."); String abc = new Stringa;
7、 abc0=str; return abc;public int getInt(String arg) System.out.println("call webservice getInt."); return arg.length();這個(gè)服務(wù)端有4個(gè)方法,分別返回不同類(lèi)型的值??蛻?hù)端就要改成String urlname = ""Service s = new Service();try Call call = (Call) s.createCall();/要調(diào)用的方法名稱(chēng)call.setOperationName("say");c
8、all.setTargetEndpointAddress(urlname);/方法傳入一個(gè)String型參數(shù),返回值也是StringString val = (String) call.invoke(new Object "haha" );System.out.println(val);Call call4 = (Call) s.createCall();/要調(diào)用的方法名稱(chēng)call4.setTargetEndpointAddress(urlname);call4.setOperationName("getList");String st1 = "
9、;abc"/傳入?yún)?shù)類(lèi)型為Stringcall4.addParameter(new QName("st1"), XMLType.XSD_STRING, ParameterMode.IN);/返回一個(gè)ArrayListcall4.setReturnType(new QName("ArrayList"), ArrayList.class);ArrayList list = (ArrayList) call4.invoke(new Object st1 );System.out.println("+" + list.size();
10、Call call2 = (Call) s.createCall();String st2 = "abc"int count = 303;call2.setOperationName("getStrs");call2.setTargetEndpointAddress(urlname);/傳入?yún)?shù)類(lèi)型為String和intcall2.addParameter(new QName("st2"), XMLType.XSD_STRING, ParameterMode.IN);call2.addParameter(new QName("
11、;count"), XMLType.XSD_INT, ParameterMode.IN);/返回一個(gè)Stringcall2.setReturnType(new QName("String"), String.class);String strs = (String) call2.invoke(new Object st2,Integer.valueOf(count) );System.out.println("-" + strs.length);Call call3 = (Call) s.createCall();String st3 = &q
12、uot;abcdefg"call3.setOperationName("getInt");call3.setTargetEndpointAddress(urlname);/傳入?yún)?shù)類(lèi)型為Stringcall3.addParameter(new QName("st3"), XMLType.XSD_STRING, ParameterMode.IN);/返回一個(gè)intcall3.setReturnType(new QName("Integer"), Integer.class);Integer getint = (Integer)
13、 call3.invoke(new Object st3);System.out.println(getint); catch (Exception e) e.printStackTrace();需要導(dǎo)入: import java.util.ArrayList;import space.QName;import javax.xml.rpc.ParameterMode;import ll;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;學(xué)習(xí)中需要注意的地方:1、 在客戶(hù)端調(diào)用其他程序的類(lèi)時(shí)
14、需要先把外部類(lèi)引入到myService.warWEB-INF下新建classes文件夾,包路徑與原類(lèi)相同,如果是jar文件,則需要復(fù)制到myService.warWEB-INFlib下。這樣.jws格式文件才能正確編譯為.class文件。2、 調(diào)用其他服務(wù)器上的webservice時(shí)需要注意一定要將包導(dǎo)入完全,如果包缺少會(huì)影響使用。五 開(kāi)發(fā)webService客戶(hù)端。Dynamic Proxy方式 (代理方式) 還是以上面那個(gè)服務(wù)端為例,用代理的方式來(lái)調(diào)用webService我們只需要對(duì)客戶(hù)端的代碼進(jìn)行修改就可以了,代碼如下String wsdlUrl = ""String
15、 nameSpaceUri = ""/ 服務(wù)名String serviceName = "SayHelloService"/ 服務(wù)String portName = "SayHello" / 創(chuàng)建代理對(duì)像ServiceFactory serviceFactory;try serviceFactory = ServiceFactory.newInstance();/創(chuàng)建遠(yuǎn)程服務(wù)Service service = (Service) serviceFactory.createService(new URL(wsdlUrl), new QN
16、ame(nameSpaceUri, serviceName);/向上轉(zhuǎn)型為接口MyServiceInterface proxy = (MyServiceInterface) service.getPort(new QName(nameSpaceUri, portName), MyServiceInterface.class);/調(diào)用相應(yīng)方法System.out.println("proxy.say -"+ proxy.say("li lei");System.out.println("proxy.getList -"+ proxy.g
17、etList("AAAA").size();System.out.println("proxy.getStrs -"+ proxy.getStrs("BBBB",10).length);System.out.println("proxy.getInt -"+ proxy.getInt("ABCDEFG"); catch (MalformedURLException e) e.printStackTrace(); catch (ServiceException e) e.printStackTrace();需要導(dǎo)入:import .MalformedURLException;import .URL;import space.QName;import javax.xml.rpc.ServiceException;import javax.xml.rpc.ServiceFactory;import org.apache.axis.client.Service;MyServiceInterface接口類(lèi)的編寫(xiě)import java.rmi.Remo
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游取消旅游取消保險(xiǎn)合同3篇
- 政府采購(gòu)云計(jì)算服務(wù)設(shè)備合同3篇
- 安裝工程合同的工程結(jié)算審核3篇
- 旅游導(dǎo)游崗位勞動(dòng)合同模板2篇
- 教育培訓(xùn)行業(yè)集體勞動(dòng)協(xié)議3篇
- 提升工作質(zhì)量對(duì)策3篇
- 新產(chǎn)品開(kāi)發(fā)保密協(xié)議3篇
- 安全駕駛承諾書(shū)3篇
- 尾氣排放監(jiān)測(cè)系統(tǒng)3篇
- 旅游導(dǎo)游勞動(dòng)合同范本3篇
- 完整版鋁板雨棚施工方案
- 屋頂光伏發(fā)電應(yīng)急預(yù)案
- 社會(huì)實(shí)踐-形考任務(wù)二-國(guó)開(kāi)(CQ)-參考資料
- app隱私協(xié)議模板
- 高職高考作文【4篇】
- 超星爾雅學(xué)習(xí)通《創(chuàng)業(yè)法學(xué)(江西財(cái)經(jīng)大學(xué))》2024章節(jié)測(cè)試含答案(一)
- 2020-2021學(xué)年湖北省武漢市江漢區(qū)七年級(jí)(下)期末英語(yǔ)試卷(附答案詳解)
- 盾構(gòu)隧道管片生產(chǎn)施工方案
- 2023年中國(guó)軟件行業(yè)基準(zhǔn)數(shù)據(jù)SSM-BK-202310
- 華為管理法讀后感
- 南京財(cái)經(jīng)大學(xué)國(guó)際服務(wù)貿(mào)易(考試重點(diǎn))
評(píng)論
0/150
提交評(píng)論