• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-20  評(píng)論-89  文章-1  trackbacks-0

            [start]學(xué)習(xí)web service編程
            2006年4月28日 劉濤LiuTao.PRC@gmail.com

            1.? 通過(guò)IBM網(wǎng)站上的簡(jiǎn)單例子建立感性認(rèn)識(shí)
            應(yīng)用AXIS開(kāi)始Web 服務(wù)之旅
            1.1 Web Service服務(wù)端開(kāi)發(fā)
            編寫(xiě)Hello.java,內(nèi)容如下:

            public ? class ?Hello {
            ?
            public ?String?hello(String?name) {
            ??
            if (name == null )
            ???name?
            = ? "" ;
            ??
            return ? " 你好 " + name + " ,歡迎來(lái)到Web服務(wù)的世界! " ;
            }

            }

            將文件改名為Hello.jws,并拷貝到AXIS應(yīng)用目錄%AXIS_HOME%\下。
            測(cè)試該Web服務(wù):打開(kāi)瀏覽器并輸入http://localhost:8080/axis/Hello.jws ,瀏覽器顯示如下結(jié)果:

            There?is?a?Web?Service?here
            ????????
            ????????Click?to?see?the?WSDL?

            到此我們已經(jīng)完成了hello的Web服務(wù)了,那我們?cè)趺锤嬖V用戶(hù)如何來(lái)使用該服務(wù)呢?我們只需要告訴用戶(hù)我們的Web服務(wù)的URL地址: http://localhost:8080/axis/Hello.jws?wsdl 就可以了!下一節(jié)我們將介紹如何通過(guò)這個(gè)地址來(lái)訪問(wèn)對(duì)應(yīng)的Web服務(wù)。

            1.2 Web Service客戶(hù)端開(kāi)發(fā)
            1.2.1 JAVA客戶(hù)端
            使用AXIS的工具將使Web服務(wù)的訪問(wèn)和我們之前介紹的創(chuàng)建一個(gè)Web服務(wù)一樣的簡(jiǎn)單。我們前面安裝的AXIS環(huán)境中已經(jīng)包含著這樣的工具,它是一個(gè)JAVA類(lèi),類(lèi)名為:org.apache.axis.wsdl.WSDL2Java。打開(kāi)命令行窗口,轉(zhuǎn)到AXIS目錄下的WEB-INF子目錄。確保Tomcat服務(wù)已經(jīng)處于啟動(dòng)狀態(tài),鍵入命令 :

            Java?-Djava.ext.dirs=lib?org.apache.axis.wsdl.WSDL2Java?http://localhost:8080/axis/Hello.jws?wsdl

            該命令執(zhí)行的結(jié)果是在當(dāng)前所在目錄下產(chǎn)生一個(gè)子目錄 localhost/axis/Hello_jws,該目錄下有四個(gè)JAVA源文件,它們分別是:
            Hello.java 定義了Web服務(wù)接口,此例中只有一個(gè)hello方法。
            HelloService.java 定義了用于獲取Web服務(wù)接口的方法。
            HelloServiceLocator.java 接口HelloService的具體實(shí)現(xiàn)。
            HelloSoapBindingStub.java Web服務(wù)客戶(hù)端樁,通過(guò)該類(lèi)與服務(wù)器交互。

            這四個(gè)JAVA類(lèi)幫我們處理了大部分的邏輯,我們需要的僅僅是把這些類(lèi)加到我們的項(xiàng)目然后創(chuàng)建一個(gè)我們自己的類(lèi)來(lái)調(diào)用它們即可。為此我們新加一個(gè)類(lèi)Main.java,為了方便,讓這個(gè)類(lèi)與剛產(chǎn)生的四個(gè)類(lèi)都在同一個(gè)包下。內(nèi)容如下:

            // Main.java
            package ?localhost.axis.Hello_jws;
            public ? class ?Main {
            ????
            public ? static ? void ?main(String[]?args)? throws ?Exception {
            ????????HelloService?service?
            = ? new ?HelloServiceLocator();
            ????????Hello?hello?
            = ?service.getHello();?
            ????????System.out.println(
            " Response: " + hello.hello( " 罐頭 " ));?
            ????}

            }

            使用以下命令進(jìn)行編譯:

            javac?-classpath?lib\axis.jar;lib\jaxrpc.jar?localhost\axis\Hello_jws\*.java

            如果編譯沒(méi)有問(wèn)題的話執(zhí)行該測(cè)試程序:

            java?-Djava.ext.dirs=lib?-cp?.?localhost.axis.Hello_jws.Main//運(yùn)行結(jié)果:Response:你好罐頭,歡迎來(lái)到Web服務(wù)的世界!

            在WSDL2Java工具自動(dòng)產(chǎn)生的幾個(gè)類(lèi)中,類(lèi)HelloServiceLocator中保存這一些跟服務(wù)器相關(guān)的信息,例如URL地址等,當(dāng)服務(wù)器的地址更改后但是服務(wù)并沒(méi)有改動(dòng)的時(shí)候直接修改該文件中的字符串定義,而無(wú)需重新生成這幾個(gè)類(lèi)。具體需要修改的內(nèi)容,打開(kāi)該文件便可一目了然。

            1.2.2 VC客戶(hù)端
            參見(jiàn)IBM的原貼。

            2. Web服務(wù)的定義:
            A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.
            From:W3C 1.4 What is a Web service?

            3. 閱讀Axis Developer's Guide(下載的Axis包內(nèi)/docs/developers-guide.html)
            讀到一條關(guān)于代理上網(wǎng)的信息,或許以后有用,先記一筆。
            If you access the internet via a proxy server, you'll need to set an environment variable so that the Axis tests do the same. Set ANT_OPTS to, for example:

            -Dhttp.proxyHost=proxy.somewhere.com?-Dhttp.proxyPort=80?-Dhttp.nonProxyHosts="localhost"


            ?

            posted on 2006-04-28 17:58 夜舞重金屬 閱讀(3598) 評(píng)論(6)  編輯 收藏 引用 所屬分類(lèi): Web服務(wù)(Web Services)

            評(píng)論:
            # re:急問(wèn)斑竹!!! [start]學(xué)習(xí)web service編程 2006-08-18 13:18 | joven
            測(cè)試服務(wù)時(shí),執(zhí)行系列命令
            Java -Djava.ext.dirs=lib org.apache
            .axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl
            出現(xiàn)如下錯(cuò)誤,請(qǐng)問(wèn)是什么原因? 感覺(jué)好像是缺少JAR包,如果是缺少哪幾個(gè)?謝謝
            java.io.FileNotFoundException: http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown So
            urce)
            at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrent
            Entity(Unknown Source)
            at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineD
            ocVersion(Unknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
            nknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
            nknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown So
            urce)
            at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown So
            urce)
            at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unk
            nown Source)
            at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
            at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:420)
            at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav
            a:482)
            at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
            at java.lang.Thread.run(Unknown Source)  回復(fù)  更多評(píng)論
              
            # re:急問(wèn)斑竹!!! [start]學(xué)習(xí)web service編程 2006-08-18 13:19 | joven
            測(cè)試服務(wù)時(shí),執(zhí)行系列命令
            Java -Djava.ext.dirs=lib org.apache
            .axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl
            出現(xiàn)如下錯(cuò)誤,請(qǐng)問(wèn)是什么原因? 感覺(jué)好像是缺少JAR包,如果是缺少哪幾個(gè)?謝謝
            java.io.FileNotFoundException: http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown So
            urce)
            at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrent
            Entity(Unknown Source)
            at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineD
            ocVersion(Unknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
            nknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
            nknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown So
            urce)
            at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown So
            urce)
            at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unk
            nown Source)
            at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
            at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:420)
            at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav
            a:482)
            at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
            at java.lang.Thread.run(Unknown Source)

            我的信箱:myheart112@sina.com 謝謝  回復(fù)  更多評(píng)論
              
            # re: [start]學(xué)習(xí)web service編程 2006-08-19 13:39 | 夜舞重金屬
            你是不是用的jdk1.4?
            這樣試試:
            1、下載xerces.jar包,裝上。
            http://xerces.apache.org/xerces-j/index.html

            2、最好升級(jí)jdk1.5,內(nèi)置了很多jar包,比如xerces.jar。

            另外可以檢查配置,參考我網(wǎng)格的帖子。
              回復(fù)  更多評(píng)論
              
            # re: [start]學(xué)習(xí)web service編程 2006-08-19 16:00 | joven
            我裝的是1.5 我下了那個(gè)包,把其中的JAR包加入到LIB中,錯(cuò)誤少了,但是還有,另外有人說(shuō)http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl
            這個(gè)文件不存在。這個(gè)文件不是自動(dòng)生成的嗎?你的文章里沒(méi)提到這個(gè)文條件啊。如何創(chuàng)建這個(gè)文件。我個(gè)人感覺(jué)也是。連接的文件應(yīng)該存在。但是怎么建立該文件呢?謝謝
            。E:\apache-tomcat-5.5.16\webapps\axis\WEB-INF>Java -Djava.ext.dirs=lib org.apache
            .axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl
            java.io.FileNotFoundException: http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLCon
            nection.java:1147)
            at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown So
            urce)
            at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
            Source)
            at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
            at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
            at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
            at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
            at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
            at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
            at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:420)
            at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav
            a:482)
            at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
            at java.lang.Thread.run(Thread.java:595)  回復(fù)  更多評(píng)論
              
            # re: [start]學(xué)習(xí)web service編程 2006-08-25 11:41 | 夜舞重金屬
            Hello.java的代碼如下:

            public class Hello{
            public String hello(String name){
            if(name==null)
            name = "";
            return "你好"+name+",歡迎來(lái)到Web服務(wù)的世界!";
            }
            }

            將Hello.java改名為Hello.jws  回復(fù)  更多評(píng)論
              
            # re: [start]學(xué)習(xí)web service編程 2013-01-16 14:04 | 苗木網(wǎng)
            java.io.FileNotFoundException: http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl">http://localhost:8080/axis/Hello.jws?wsdl
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLCon
            nection.java:1147)
            at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown So
            urce)
            at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
            Source)
            at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
            at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
            at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
            at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
            at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
            at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
            at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:420)
            at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav
            a:482)
            at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
            at java.lang.Thread.run(Thread.java:595)   回復(fù)  更多評(píng)論
              

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            中文字幕久久精品无码| 97精品伊人久久久大香线蕉| 欧美伊人久久大香线蕉综合| 久久综合香蕉国产蜜臀AV| 99久久国产主播综合精品| 伊人久久大香线蕉综合网站| 久久久久亚洲精品无码蜜桃 | 国内精品久久久久影院亚洲| 久久亚洲春色中文字幕久久久| 久久99精品国产麻豆不卡| 日韩精品久久无码中文字幕| 久久精品成人免费观看97| 精品国产一区二区三区久久久狼 | 国产亚州精品女人久久久久久 | 久久国产精品99精品国产| 久久天天躁狠狠躁夜夜2020| 久久99国产精品久久久| 久久强奷乱码老熟女网站| 久久久久九九精品影院| 伊人色综合久久天天| 国产精品一区二区久久精品| 无码久久精品国产亚洲Av影片| 伊人久久大香线蕉成人| 久久精品国产精品亚洲下载| 色综合久久88色综合天天| 国产产无码乱码精品久久鸭| 国产A级毛片久久久精品毛片| 性高朝久久久久久久久久| 久久国产成人亚洲精品影院| 91麻豆精品国产91久久久久久 | 一本色道久久综合狠狠躁篇| 国产精品免费久久久久电影网| 久久久综合九色合综国产| 国产精品99久久免费观看| 7777久久久国产精品消防器材| 色婷婷噜噜久久国产精品12p | 国产欧美一区二区久久| 狠狠88综合久久久久综合网| 国产精品久久一区二区三区| 97久久久久人妻精品专区| 69久久精品无码一区二区|