企業(yè)級(jí)開(kāi)發(fā)WEB服務(wù)應(yīng)用

上傳人:仙*** 文檔編號(hào):235518659 上傳時(shí)間:2023-11-10 格式:PPT 頁(yè)數(shù):46 大?。?.17MB
收藏 版權(quán)申訴 舉報(bào) 下載
企業(yè)級(jí)開(kāi)發(fā)WEB服務(wù)應(yīng)用_第1頁(yè)
第1頁(yè) / 共46頁(yè)
企業(yè)級(jí)開(kāi)發(fā)WEB服務(wù)應(yīng)用_第2頁(yè)
第2頁(yè) / 共46頁(yè)
企業(yè)級(jí)開(kāi)發(fā)WEB服務(wù)應(yīng)用_第3頁(yè)
第3頁(yè) / 共46頁(yè)

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《企業(yè)級(jí)開(kāi)發(fā)WEB服務(wù)應(yīng)用》由會(huì)員分享,可在線閱讀,更多相關(guān)《企業(yè)級(jí)開(kāi)發(fā)WEB服務(wù)應(yīng)用(46頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第六章第六章WEB服務(wù)(服務(wù)(WEB SERVICE)開(kāi)發(fā)和應(yīng)用)開(kāi)發(fā)和應(yīng)用課程內(nèi)容課程內(nèi)容WebService的各種創(chuàng)建和查看 實(shí)現(xiàn)WebService客戶端 WebService的應(yīng)用場(chǎng)合WebService的優(yōu)點(diǎn)和缺點(diǎn) WebService的性能優(yōu)化 創(chuàng)建和查看創(chuàng)建和查看WEB服務(wù)服務(wù)Web Service軟件的支持軟件的支持 Web Service構(gòu)建工具如下:構(gòu)建工具如下:微軟微軟.NET IBM的的WebSphere Borland的的JBuilder 開(kāi)源的開(kāi)源的Eclipse 總之,在總之,在Web Service開(kāi)發(fā)上,開(kāi)發(fā)上,.NET 和和Java都是很好的選擇,盡管兩者都

2、是很好的選擇,盡管兩者現(xiàn)在都有一些需要完善的地方,但是就目前來(lái)說(shuō),它們還是最好的開(kāi)發(fā)手段現(xiàn)在都有一些需要完善的地方,但是就目前來(lái)說(shuō),它們還是最好的開(kāi)發(fā)手段和技術(shù)。具體選擇哪種開(kāi)發(fā)工具,也是仁者見(jiàn)仁,智者見(jiàn)智的問(wèn)題。和技術(shù)。具體選擇哪種開(kāi)發(fā)工具,也是仁者見(jiàn)仁,智者見(jiàn)智的問(wèn)題。使用使用XFire開(kāi)發(fā)開(kāi)發(fā)Web服務(wù)服務(wù) 一個(gè)一個(gè)Demo:一個(gè)銀行業(yè)應(yīng)用程序,將資金從一個(gè)賬戶轉(zhuǎn)到另外一個(gè)賬戶上。一個(gè)銀行業(yè)應(yīng)用程序,將資金從一個(gè)賬戶轉(zhuǎn)到另外一個(gè)賬戶上。它需要四個(gè)輸入?yún)?shù):String fromAccount:轉(zhuǎn)帳的帳戶帳號(hào)。String toAccount:被轉(zhuǎn)到的帳戶帳號(hào)。double amount:

3、轉(zhuǎn)帳的資金數(shù)目。String bankName:服務(wù)的銀行名稱。XFire是一個(gè)免費(fèi)的開(kāi)源SOAP框架,它不僅可以極大方便地實(shí)現(xiàn)這樣一個(gè)環(huán)境,并且可以提供許多Web Services規(guī)范中的高級(jí)特征,這些特征在多數(shù)的商業(yè)或者開(kāi)源工具都沒(méi)有提供。下面你將會(huì)看到使用XFire創(chuàng)建Web Services是多么的簡(jiǎn)單。接口的設(shè)計(jì):接口的設(shè)計(jì):package com.test.webservice;public interface IBankService public String transferFunds(String fromAccount,String toAccount,double am

4、ount,String bankName);編寫編寫Java類簡(jiǎn)單的實(shí)現(xiàn)以上接口(代碼省略)類簡(jiǎn)單的實(shí)現(xiàn)以上接口(代碼省略)Web應(yīng)用的部署描述符應(yīng)用的部署描述符 首先,修改首先,修改web.xml。我們需要增加下面的。我們需要增加下面的XFire servlet相關(guān)的條相關(guān)的條目,部分代碼如下:目,部分代碼如下:XFireServlet/servlet/XFireServlet/*XFireServlet/services/*在Java中,Web應(yīng)用程序通常需要至少一個(gè)部署描述符對(duì)其進(jìn)行配置。XFire本身是一個(gè)基于Servlet的應(yīng)用程序。因此,我們需要增加必要的引用到描述符文件中。然后我

5、們還必須配置將要?jiǎng)?chuàng)建的Web Services。我們使用一個(gè)稱為services.xml的新文件來(lái)完成這件事。services.xml Web Services是由一個(gè)叫做是由一個(gè)叫做services.xml的文件組成的,的文件組成的,存放在存放在META-INF/xfire目錄下目錄下。該文件的部分配置代碼如下:。該文件的部分配置代碼如下:BankServicecom.test.webservice.IBankServicecom.test.webservice.BankServiceImplwrappedliteralapplication分析分析service.xml文件中的元素文件中的

6、元素 ,它可以是你提供任何的合法名字。這將會(huì)被客,它可以是你提供任何的合法名字。這將會(huì)被客戶端程序和其它需要定位你的服務(wù)的組件用到??梢栽跒g戶端程序和其它需要定位你的服務(wù)的組件用到。可以在瀏覽器上使用這個(gè)名字來(lái)查看覽器上使用這個(gè)名字來(lái)查看WSDL。任何合法的。任何合法的XML名字都是可以的。名字都是可以的。用來(lái)唯一標(biāo)識(shí)你的服務(wù)的各個(gè)參數(shù)。用來(lái)唯一標(biāo)識(shí)你的服務(wù)的各個(gè)參數(shù)。元素包含了元素包含了Java類的名字,它指定了方法類的名字,它指定了方法簽名。在我們的例子中,它是接口簽名。在我們的例子中,它是接口IBankingService。如果。如果Java類沒(méi)有實(shí)現(xiàn)任何接口,就需要把類的名字放在這里。

7、類沒(méi)有實(shí)現(xiàn)任何接口,就需要把類的名字放在這里。在你的在你的Java類或者接口中可能有幾個(gè)方法。只需要一個(gè)入類或者接口中可能有幾個(gè)方法。只需要一個(gè)入口把它們?nèi)堪l(fā)布為口把它們?nèi)堪l(fā)布為Web Services。保存了實(shí)現(xiàn)方法的保存了實(shí)現(xiàn)方法的Java類名。這類名。這是一個(gè)可選元素。如果上一個(gè)元素是一個(gè)可選元素。如果上一個(gè)元素包含了一包含了一個(gè)接口,那么相應(yīng)的實(shí)現(xiàn)類必須在這里指定。個(gè)接口,那么相應(yīng)的實(shí)現(xiàn)類必須在這里指定?;镜幕镜腤eb Services開(kāi)發(fā)步驟開(kāi)發(fā)步驟 基本的基本的Web Services開(kāi)發(fā)步驟開(kāi)發(fā)步驟 如下:如下:1編寫Java類,類中的方法和默認(rèn)構(gòu)造函數(shù)確保為public

8、。2增加X(jué)Fire servlet相關(guān)條目到web.xml中。3創(chuàng)建services.xml,把它放到WEB-INF/classes/META-INF/xfire目 錄下。4增加X(jué)Fire和第三方包到你的Web應(yīng)用的WEB-INF/lib文件夾中。XFire的其他高級(jí)特性的其他高級(jí)特性 本地?cái)?shù)據(jù)綁定支持本地?cái)?shù)據(jù)綁定支持POJOs(plain-old Java objects)、)、XMLBeans、JAXB(Java Architecture for XML Binding)、)、Castor等等。等等。使用使用StAX(Streaming API for XML)處理處理XML文檔。文檔。支

9、持多種傳輸協(xié)議,如支持多種傳輸協(xié)議,如HTTP、JMS(Java Message Service)和和JVM內(nèi)部傳輸。內(nèi)部傳輸。嵌入式,這是嵌入式,這是XFire的核心功能之一。的核心功能之一。豐富的豐富的API,它使,它使XFire可高度自定義可高度自定義。兼容最新的標(biāo)準(zhǔn)例如兼容最新的標(biāo)準(zhǔn)例如SOAP1.1(沒(méi)有加密遠(yuǎn)程工程調(diào)用,或者(沒(méi)有加密遠(yuǎn)程工程調(diào)用,或者RPC)和)和1.2、WSDL1.1等。等。其他開(kāi)發(fā)其他開(kāi)發(fā)Web服務(wù)的途徑服務(wù)的途徑一:使用EJB來(lái)暴露Web服務(wù)二:將Web工程發(fā)布為Web服務(wù) 查看查看Web服務(wù)服務(wù) 假如我們的Web服務(wù)是發(fā)布在JBoss服務(wù)器中的,我們可以通

10、過(guò)JBoss管理平臺(tái)查看剛才發(fā)布的Web Service,我們可以輸入:“http:/localhost:8080/jbossws/”進(jìn)入JBossWS的查看界面,點(diǎn)擊“View”連接后,可以查看已經(jīng)發(fā)布的Web服務(wù) 兩種實(shí)現(xiàn)兩種實(shí)現(xiàn)Web服務(wù)的方法服務(wù)的方法 1開(kāi)始編寫Java類,并讓容器去生成WSDL及其它所需要的XML文檔;2開(kāi)始編寫(或直接使用現(xiàn)成的)WSDL文件,并借助于開(kāi)發(fā)工具生成所需要的Java類。其他開(kāi)發(fā)其他開(kāi)發(fā)Web服務(wù)的途徑服務(wù)的途徑實(shí)現(xiàn)實(shí)現(xiàn)WEB服務(wù)客戶服務(wù)客戶調(diào)用調(diào)用WebService的方法的方法 在在J2EE平臺(tái)中,平臺(tái)中,Web服務(wù)客戶同服務(wù)客戶同EJB客戶類似。

11、如以下兩種方式能客戶類似。如以下兩種方式能夠訪問(wèn)到夠訪問(wèn)到Web服務(wù):服務(wù):1單獨(dú)的JAX-WS客戶。它們不借助于JNDI來(lái)訪問(wèn)Web服務(wù)。2J2EE客戶(比如Web客戶、J2EE應(yīng)用客戶)。它們借助于客戶端的JNDI上下文訪問(wèn)Web服務(wù)。分析:分析:第一種方式:不借助于JNDI,即單獨(dú)客戶,比如那些未運(yùn)行在應(yīng)用服務(wù)器中的遠(yuǎn)程Java客戶能夠訪問(wèn)到Web服務(wù)。第二種方式:依賴于Dispatch對(duì)象。它在運(yùn)行的時(shí)候以來(lái)動(dòng)態(tài)調(diào)用接口(Dynamic Invocation Interface,DII)創(chuàng)建調(diào)用對(duì)象。開(kāi)發(fā)一個(gè)客戶端開(kāi)發(fā)一個(gè)客戶端 如以下代碼:/創(chuàng)建一個(gè)服務(wù)模型創(chuàng)建一個(gè)服務(wù)模型Servi

12、ce serviceModel=new ObjectServiceFactory().create(IBankService.class);/獲得服務(wù)的代理工廠獲得服務(wù)的代理工廠XFire xfire=XFireFactory.newInstance().getXFire();XFireProxyFactory factory=new XFireProxyFactory(xfire);可以使用任何的SOAP工具創(chuàng)建客戶端,例如,.Net或者Apache Axis,有很多種方法,使用從WSDL產(chǎn)生的stubs,使用動(dòng)態(tài)代理等等。下面這個(gè)例子中,我們使用一個(gè)動(dòng)態(tài)代理,以一個(gè)簡(jiǎn)單的Servlet形式

13、,叫做WsClient.java。為了保持代碼量最小,所有在屏幕顯示的元素都放在了doGet()方法中。String serviceUrl=http:/localhost:8080/BankWebService/services/BankService;IBankService client=null;try client=(IBankService)factory.create(serviceModel,serviceUrl);catch(MalformedURLException e)log.error(WsClient.callWebService():出現(xiàn)異常:+e.toString(

14、);/調(diào)用服務(wù)調(diào)用服務(wù)String serviceResponse=;try serviceResponse=client.transferFunds(fromAccount,toAccount,amount,currency);catch(Exception e)/返回服務(wù)的調(diào)用結(jié)果返回服務(wù)的調(diào)用結(jié)果return serviceResponse;WEB服務(wù)的應(yīng)用探討服務(wù)的應(yīng)用探討WebService的缺點(diǎn)的缺點(diǎn) XML限制限制 無(wú)狀態(tài)(無(wú)狀態(tài)(stateless)的服務(wù))的服務(wù) 數(shù)據(jù)綁定也存在一些不足數(shù)據(jù)綁定也存在一些不足 技術(shù)要求高,學(xué)習(xí)曲線較長(zhǎng)技術(shù)要求高,學(xué)習(xí)曲線較長(zhǎng) 在體會(huì)到在體會(huì)到W

15、ebService自身的優(yōu)點(diǎn)的同時(shí),不要忘了自身的優(yōu)點(diǎn)的同時(shí),不要忘了WebService也存在很多的缺點(diǎn):也存在很多的缺點(diǎn):什么應(yīng)用適合什么應(yīng)用適合Web Services?基于基于WAN和和Internet的應(yīng)用的應(yīng)用 基于異構(gòu)平臺(tái)的應(yīng)用基于異構(gòu)平臺(tái)的應(yīng)用 需要強(qiáng)安全特性的應(yīng)用需要強(qiáng)安全特性的應(yīng)用 EAI(企業(yè)應(yīng)用集成)(企業(yè)應(yīng)用集成)行業(yè)內(nèi)部行業(yè)內(nèi)部B2B應(yīng)用應(yīng)用 就目前來(lái)說(shuō),就目前來(lái)說(shuō),Web Services比較適合用于下列形式的應(yīng)用:比較適合用于下列形式的應(yīng)用:提高提高Web Services的性能的性能 要想提高要想提高Web Services應(yīng)用的性能,需要對(duì)整個(gè)系統(tǒng)做全應(yīng)用的

16、性能,需要對(duì)整個(gè)系統(tǒng)做全盤的考慮。一般來(lái)說(shuō),有以下幾點(diǎn)需要注意:盤的考慮。一般來(lái)說(shuō),有以下幾點(diǎn)需要注意:(1)Web Services的顆粒度的顆粒度,Web Services比較適用于比較適用于大顆粒度的應(yīng)用,在一個(gè)調(diào)用中便獲得所有的信息大顆粒度的應(yīng)用,在一個(gè)調(diào)用中便獲得所有的信息(2)謹(jǐn)慎使用)謹(jǐn)慎使用XML接口接口,避免不必要的,避免不必要的XML文檔的解文檔的解析和效驗(yàn);在處理析和效驗(yàn);在處理XML的時(shí)候,盡量將的時(shí)候,盡量將XML轉(zhuǎn)換成內(nèi)部轉(zhuǎn)換成內(nèi)部對(duì)象,對(duì)象,XML的傳遞只會(huì)增加系統(tǒng)的開(kāi)銷。的傳遞只會(huì)增加系統(tǒng)的開(kāi)銷。(3)最大可能性使用)最大可能性使用CACHE,可以使用可以使用C

17、ACHE(緩沖緩沖技術(shù)技術(shù))。無(wú)論是客戶端的。無(wú)論是客戶端的CACHE還是服務(wù)器端的還是服務(wù)器端的CACHE,都能大大提高系統(tǒng)的性能。,都能大大提高系統(tǒng)的性能。本章總結(jié)本章總結(jié)WebService的各種創(chuàng)建和查看 實(shí)現(xiàn)WebService客戶端 WebService的應(yīng)用場(chǎng)合WebService的優(yōu)點(diǎn)和缺點(diǎn) WebService的性能優(yōu)化 動(dòng)手實(shí)踐:人數(shù)計(jì)算器動(dòng)手實(shí)踐:人數(shù)計(jì)算器人數(shù)計(jì)數(shù)器人數(shù)計(jì)數(shù)器 要開(kāi)始本章的體驗(yàn)項(xiàng)目首先要做以下的準(zhǔn)備工作:要開(kāi)始本章的體驗(yàn)項(xiàng)目首先要做以下的準(zhǔn)備工作:(1)首先將本章體驗(yàn)項(xiàng)目下配置文件按照指定要求放到指定目錄)首先將本章體驗(yàn)項(xiàng)目下配置文件按照指定要求放到指定

18、目錄 下:下:C盤根目錄下。盤根目錄下。(2)之后將體驗(yàn)項(xiàng)目部署到服務(wù)器中,并啟動(dòng)服務(wù)器。)之后將體驗(yàn)項(xiàng)目部署到服務(wù)器中,并啟動(dòng)服務(wù)器。(3)最后在瀏覽器中輸入以下地址:)最后在瀏覽器中輸入以下地址:http:/localhost:8080/CounterWebService/counter.jsp 如果成功運(yùn)行則會(huì)看到類似以下的畫面,如圖如果成功運(yùn)行則會(huì)看到類似以下的畫面,如圖6-1所示:所示:圖6-1 計(jì)數(shù)器頁(yè)面 可以看到頁(yè)面中成功的輸出了當(dāng)天的訪問(wèn)量以及當(dāng)周的訪問(wèn)量和總訪可以看到頁(yè)面中成功的輸出了當(dāng)天的訪問(wèn)量以及當(dāng)周的訪問(wèn)量和總訪問(wèn)量,當(dāng)刷新頁(yè)面的時(shí)候,會(huì)看到統(tǒng)計(jì)的數(shù)字依次加一。問(wèn)量,當(dāng)

19、刷新頁(yè)面的時(shí)候,會(huì)看到統(tǒng)計(jì)的數(shù)字依次加一。實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟(1)新建一個(gè))新建一個(gè)WebService工程工程,之后編寫業(yè)務(wù)操作的接口,之后編寫業(yè)務(wù)操作的接口類:類:ICounterSerivce;(2)實(shí)現(xiàn)該接口的業(yè)務(wù))實(shí)現(xiàn)該接口的業(yè)務(wù)Bean:CounterServiceImpl(3)編寫一個(gè)簡(jiǎn)單客戶端是如何調(diào)用以上)編寫一個(gè)簡(jiǎn)單客戶端是如何調(diào)用以上Web服務(wù)服務(wù)(4)在工程中新建一個(gè))在工程中新建一個(gè)JSP頁(yè)面:頁(yè)面:counter.jsp,通過(guò)客戶端,通過(guò)客戶端Bean應(yīng)用該應(yīng)用該Web服務(wù)服務(wù) 在開(kāi)始開(kāi)發(fā)在開(kāi)始開(kāi)發(fā)WebSerivce之前,我們首先要做的是在之前,我們首先要做的是在c

20、盤下或者是其它目盤下或者是其它目錄下新建一個(gè)文件錄下新建一個(gè)文件-counter.xml,用于保存記錄的數(shù)字,用于保存記錄的數(shù)字。(1)創(chuàng)建一個(gè)Web服務(wù),實(shí)現(xiàn)對(duì)用戶訪問(wèn)頁(yè)面的次數(shù)進(jìn)行分天或分周進(jìn)行統(tǒng)計(jì)。(2)在Java中調(diào)用該Web服務(wù),并在JSP頁(yè)面中把結(jié)果顯示出來(lái)。(1)在開(kāi)始開(kāi)發(fā)Web Serivce之前,我們首先要做的是在C盤下或者是其它目錄下新建一個(gè)文件counter.xml,用于保存記錄的數(shù)字,counter.xml文件內(nèi)容如下:admin123456124562007-6-18 5:42:58(2)新建一個(gè)Web Services工程,命名為CounterWebSerivce,

21、之后編寫業(yè)務(wù)操作的接口類ICounterSerivce,代碼如下:package com.test.webserivce;public interface ICounterSerivce public String counter(String userName,String password);(3)編寫實(shí)現(xiàn)類CounterServiceImpl,代碼如下:package com.test.webservice;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.text.D

22、ateFormat;import java.text.ParseException;import java.util.*;import org.dom4j.*;public class CounterServiceImpl implements ICounterService private final String filePath=c:/counter.xml;private final static DateFormat DATEFORMATER=DateFormat.getDateTimeInstance();private final String errorInfor=0;0;/*

23、功能:打開(kāi)計(jì)數(shù)器文檔*/private Document openDocument()/*功能:對(duì)文檔進(jìn)行解析,之后進(jìn)行加一操作,保存*該方法為同步的*/public synchronized String doCount(String userName,String passWord)/public String counter(String userName,String password)if(userName=null|password=null)return null;elsereturn doCount(userName,password);/測(cè)試用的main()方法,最后屏蔽該段

24、代碼/*public static void main(String args)CounterServiceImpl c=new CounterServiceImpl();String src=c.counter(admin,123456);System.out.println(src);*/(4)下面我們一一實(shí)現(xiàn)以上的方法:openDocument()方法的實(shí)現(xiàn):主要是使用SAXReader的read()方法來(lái)獲得一個(gè)指定xml文件路徑的Document文檔對(duì)象。代碼如下:private Document openDocument()Document doc=null;SAXReader r

25、eader=new SAXReader();try File xmlfile=new File(filePath);doc=reader.read(xmlfile);xmlfile=null;catch(DocumentException e)e.printStackTrace();return doc;doCount()方法的實(shí)現(xiàn):該方法一定是要同步的,不然會(huì)導(dǎo)致數(shù)據(jù)的不正確。該方法是主要的操作方法,通過(guò)openDocument()方法獲取的Document對(duì)象doc來(lái)對(duì)XML文件進(jìn)行解析,分別獲取代表周訪問(wèn)量、日訪問(wèn)量、登記時(shí)間、總訪問(wèn)量的數(shù)據(jù),并分別保存到wc、dc、rt、tc變量中,之

26、后利用Date對(duì)象和Calendar對(duì)象和當(dāng)前時(shí)間進(jìn)行對(duì)比,從而修改XML文件的數(shù)據(jù)并將修改后的數(shù)據(jù)返回以供客戶端調(diào)用。具體代碼如下:public synchronized String doCount(String userName,String passWord)Document doc=openDocument();Date currdt=new java.util.Date();/wc:month counter(周計(jì)數(shù)器);dc:day counter(日計(jì)數(shù)器);/rt:registe time登記時(shí)間;tc:Total counter(總計(jì)數(shù)器)String wc=-1,dc=-

27、1,tc=-1,rt=-1;Element root=doc.getRootElement();Element selitem=null,item=null;for(Iterator it=root.elementIterator(item);it.hasNext();)item=(Element)it.next();if(userName.equals(item.element(userName).getText()selitem=item;if(!passWord.equals(item.elementText(passWord)/密碼不對(duì),直接返回return errorInfor;dc

28、=item.element(dc).getText();wc=item.element(wc).getText();tc=item.element(tc).getText();rt=item.element(rt).getText();break;/處理計(jì)數(shù)器加一操作。Calendar currcr=Calendar.getInstance();Date lastdt=null;try/獲得xml文件記錄的登錄時(shí)間lastdt=DATEFORMATER.parse(rt);catch(ParseException e)lastdt=new java.util.Date();Calendar l

29、astcr=Calendar.getInstance();lastcr.setTime(lastdt);currcr.setTime(currdt);/System.out.println(上次登記時(shí)間:+DATEFORMATER.format(lastdt);/System.out.println(本次登記時(shí)間:+DATEFORMATER.format(currdt);/對(duì)年判斷是否相同if(lastcr.get(Calendar.YEAR)=currcr.get(Calendar.YEAR)/如果周相同,周計(jì)數(shù)加1if(lastcr.get(Calendar.WEEK_OF_YEAR)=c

30、urrcr.get(Calendar.WEEK_OF_YEAR)wc=String.valueOf(Integer.parseInt(wc)+1);elsewc=1;/如果日相同,日計(jì)數(shù)加1if(lastcr.get(Calendar.DAY_OF_YEAR)=currcr.get(Calendar.DAY_OF_YEAR)dc=String.valueOf(Integer.parseInt(dc)+1);elsedc=1;/年不一樣,則月計(jì)數(shù)器、周計(jì)數(shù)器日計(jì)數(shù)器肯定也不一樣。elsedc=1;wc=1;tc=String.valueOf(Integer.parseInt(tc)+1);/總數(shù)

31、器總是加1。selitem.element(wc).setText(wc);selitem.element(dc).setText(dc);selitem.element(tc).setText(tc);/登記記錄時(shí)間selitem.element(rt).setText(DATEFORMATER.format(currdt);try XMLWriter xw=new XMLWriter(new FileWriter(filePath);xw.write(doc);xw.close();catch(IOException e)e.printStackTrace();return dc+;+wc

32、+;+tc;(5)以上代碼主要涉及到了XML的讀寫操作和日期的判斷,這些此處我們不必深究,主要是以上業(yè)務(wù)的邏輯操作掌握即可。下面我們看一下客戶端是如何調(diào)用以上Web服務(wù)的:客戶端Bean:CounterServiceClient.javapackage com.counterservice.client;import org.codehaus.xfire.XFireFactory;import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Service;import org.code

33、haus.xfire.service.binding.ObjectServiceFactory;import com.test.webservice.ICounterService;public class CounterServiceClient private String counterarr;public boolean getCounter(String CounterName,String password)boolean flag=false;try Service srvcModel=new ObjectServiceFactory().create(ICounterServi

34、ce.class);XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire();String endpointURL=http:/localhost:8080/CounterWebService/services/CounterService;/填寫你要調(diào)用的方法名稱ICounterService srvc=(ICounterService)factory.create(srvcModel,endpointURL);String counter=srvc.counter(Counte

35、rName,password);counterarr=counter.split(;);flag=(counterarr!=null&counterarr.length=3);catch(Exception e)e.printStackTrace();return flag;public String getDc()return counterarr0;public String getWc()return counterarr1;public String getTc()return counterarr2;/測(cè)試用的main()方法,測(cè)試完畢后屏蔽該段代碼/*public static v

36、oid main(String args)CounterServiceClient cl=new CounterServiceClient();boolean b=cl.getCounter(admin,123456);System.out.println(獲得服務(wù):+b);System.out.println(總訪問(wèn)量:+cl.counterarr2);*/(6)最后在工程中新建一個(gè)JSP頁(yè)面:counter.jsp,通過(guò)客戶端Bean應(yīng)用該Web服務(wù)。counter.jsp代碼如下:base href=My JSP counter.jsp starting page計(jì)數(shù)器頁(yè)面 今天訪問(wèn)量:本周訪問(wèn)量:總訪問(wèn)量:

展開(kāi)閱讀全文
溫馨提示:
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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  sobing.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲