版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、用JAVA開發(fā)WEB Service一 學(xué)習(xí)前的準(zhǔn)備開發(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”下。“axis-bin-1_4axis-1_4webappsaxisWEB-INF“。然后將jar包拷貝到產(chǎn)品serverdefaultlib下。
2、至此部署完畢。三 開發(fā)webService服務(wù)端 用編輯器編寫一個(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;將該類復(fù)制到myService.war中與“WEB-INF”同級目錄,然后更改其名字為”SayHello.jws”。啟動(dòng)CreateGWS405,在瀏覽器地
3、址輸入打開頁面后你會看到 Click to see the WSDL <-點(diǎn)擊鏈接,如果你上面的步驟都正常,類也沒有帶其他包的話,那么就生成了wsdl了。至此webService服務(wù)端發(fā)布成功,接下來就是編寫客戶端了。四 開發(fā)webService客戶端。(DLL方式) 這里為了方便測試,我們就以CreateGWS405產(chǎn)品為客戶端,在create.war下新建一個(gè)JSP頁面,代碼如下:String urlname = ""Service s = new Service();Call call = (Call) s.createCall();/要調(diào)用的方法名稱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è)簡單的客戶端就編寫好了。上面服務(wù)端的方法參數(shù)是String,返回值也是String,而實(shí)際業(yè)務(wù)中可能還需要以
5、int,boolean等類型做參數(shù),而且參數(shù)不止一個(gè)。返回值有時(shí)是int有時(shí)又是集合ArrayList那該怎么做呢,請看下面這個(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è)方法,分別返回不同類型的值??蛻舳司鸵某蒘tring urlname = ""Service s = new Service();try Call call = (Call) s.createCall();/要調(diào)用的方法名稱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)用的方法名稱call4.setTargetEndpointAddress(urlname);call4.setOperationName("getList");String st1 = "
9、;abc"/傳入?yún)?shù)類型為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ù)類型為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ù)類型為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、 在客戶端調(diào)用其他程序的類時(shí)
14、需要先把外部類引入到myService.warWEB-INF下新建classes文件夾,包路徑與原類相同,如果是jar文件,則需要復(fù)制到myService.warWEB-INFlib下。這樣.jws格式文件才能正確編譯為.class文件。2、 調(diào)用其他服務(wù)器上的webservice時(shí)需要注意一定要將包導(dǎo)入完全,如果包缺少會影響使用。五 開發(fā)webService客戶端。Dynamic Proxy方式 (代理方式) 還是以上面那個(gè)服務(wù)端為例,用代理的方式來調(diào)用webService我們只需要對客戶端的代碼進(jìn)行修改就可以了,代碼如下String wsdlUrl = ""String
15、 nameSpaceUri = ""/ 服務(wù)名String serviceName = "SayHelloService"/ 服務(wù)String portName = "SayHello" / 創(chuàng)建代理對像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接口類的編寫import java.rmi.Remo
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)研學(xué)活動(dòng)方案6篇
- 工程造價(jià)咨詢服務(wù)合同范本9篇
- 學(xué)校矛盾糾紛排查工作情況匯報(bào)三篇
- 中國小動(dòng)物技能大賽骨科專賽理論考試題庫(含答案)
- 《反電信網(wǎng)絡(luò)詐騙法》知識考試題庫150題(含答案)
- 大拇指腱鞘炎偏方課件
- 2025年河北女子職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年江西現(xiàn)代職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年江西冶金職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年武漢職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年度新能源汽車充電站運(yùn)營權(quán)轉(zhuǎn)讓合同樣本4篇
- 第5課 隋唐時(shí)期的民族交往與交融 課件(23張) 2024-2025學(xué)年統(tǒng)編版七年級歷史下冊
- 2024年全國職業(yè)院校技能大賽高職組(生產(chǎn)事故應(yīng)急救援賽項(xiàng))考試題庫(含答案)
- 老年上消化道出血急診診療專家共識2024
- 廣東省廣州黃埔區(qū)2023-2024學(xué)年八年級上學(xué)期期末物理試卷(含答案)
- 學(xué)校安全工作計(jì)劃及行事歷
- 《GMP基礎(chǔ)知識培訓(xùn)》課件
- 數(shù)學(xué)家華羅庚課件
- 貴州茅臺酒股份有限公司招聘筆試題庫2024
- 《納米技術(shù)簡介》課件
- 血液透析高鉀血癥的護(hù)理查房
評論
0/150
提交評論