亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

使用SOAP開發java web服務

2024-07-21 02:27:36
字體:
來源:轉載
供稿:網友
  本文的預定讀者首先要對j2ee有所了解,熟悉xml,tomcat等基本內容,本文主要是簡單介紹一下web服務的基本內容,怎樣在java 中構建soap服務:
 一、soap(simple object access protocol)簡單對象訪問協議,要了解soap,首先就需要了解分布式計算的由來,隨著下一代的分布式計算體系web服務的出現,soap成為了創建和調用通過網絡發布的應用程序的實際通信標準。soap類似傳統的二進制協議iiop(corba)和jrmp(rmi),但它不采用二進制數據表示法,而是采用使用xml的,基于文本的數據表示法。
        通過xml表示法,soap定義了一種小型有線連接協議和編碼格式,以表示數據類型、編程語言和數據庫,還可以使用各種internet標準協議作為其消息傳輸工具,還可以提供表示rpc和文檔驅動的消息交換等通信模型的約定。請注意,w3c正致力于soap的研究,http://www.w3c.org/2000/xp/group/ ,并得到了主流供應商的積極響應,以便對于基于xml的協議相關的重要任務達成共識,并定義其關鍵要求和使用場景。
        soap1.2的基本規范定義了以下基本內容:
       1)用于將xml文檔表示為結構化soap消息的語法和語義
       2)在soap消息中表示數據的編碼標準
       3)用于交換soap消息的通信模型
       4)soap傳輸等底層協議的綁定
      soap消息主要包括了信封頭,消息頭,主體,附件幾部分
      一個簡單的soap消息表示:
      post   /studentinfo   http/1.1
      host:anthropology.cun.edu
      content-type: text/xml;charset="utf-8"
      content-length: 640
      soapaction:  "getstudentinfo"

     <soap-env:envelop xmlns:soap-env="http://www.w3c.org/2001/06/soap-envelope"
              xmlns:xsi="http://www.w3c.org/2001/xmlschema-instance"
              xmlns:xsd="http://www.w3c.org/2001/xmlschema"
             soap-env:encodingstyle="http://www.w3c.org/2001/06/soap-encoding">
        <soap-env:header>
            <person:mail xmlns:person="http://www.cun.edu/header">[email protected]
        </soap-env:header> 

        <soap-env:body>
            <m:getstudentinfo   xmlns:m="http://www.cun.edu/jws.student.studentinfo">
                 <student_name xsi:type='xsd:string'>
                        wang wen yin
                 </student>
             </m:getstudentinfo>
        </soap-env:body>
    </soap-env:envelop>
   以上是1.2版本命名空間,1.1的命名空間 soap envelope:http://schemas.xmlsoap.org/soap/envelop/ ,soap encoding: http://schemas.xmlsoap.org/soap/encoding/ 
   關于soap編碼規范請參閱www.w3c.org/tr/xmlschema-2/ 定義的編碼值,其他的一些規范可以上www.w3c.org 上具體查看。
二、以下從實際例子來學習,這里我使用的是apache的一個子項目axis的具體例子,便于深入了解soap的運行:
    1)下載axis的相關內容http://ws.apache.org/axis/:
    2)建立一個實例程序(遵守j2ee的web程序規范),如(webservicetest目錄)
          把axis中lib文件夾的內容拷到你的webservicetest/web-inf/lib下,同時上網下載xerces(下載地點:http://xml.apache.org/xerces-j/)解釋器的包文件xerces.jar,也拷到webservicetest/web-inf/lib文件夾下,(若要配置log4j,請把屬性文件log4j.properties拷到webservicetest/web-inf/classes文件夾下)
    3)修改應用程序webservicetest/web-inf中的web.xml文件:主要servlet設置如下
       <servlet>
              <servlet-name>testservlet</servlet-name>
              <servlet-class>org.apache.axis.transport.http.axisservlet</servlet-class>
      </servlet>
      <servlet-mapping>
              <servlet-name>testservlet</servlet-name>
              <url-pattern>*.jws</url-pattern>
     </servlet-mapping>
     <servlet-mapping>
              <servlet-name>testservlet</servlet-name>
              <url-pattern>/servlet/testservlet</url-pattern>
    </servlet-mapping>
  
    <servlet-mapping>
              <servlet-name>testservlet</servlet-name>
              <url-pattern>/services/*</url-pattern>
     </servlet-mapping>


     <servlet>
          <servlet-name>adminservlet</servlet-name>
          <servlet-class>
               org.apache.axis.transport.http.adminservlet
          </servlet-class>
          <load-on-startup>100</load-on-startup>
     </servlet>
 
     <servlet-mapping>
          <servlet-name>adminservlet</servlet-name>
          <url-pattern>/servlet/adminservlet</url-pattern>
     </servlet-mapping>
 
     <mime-mapping>
          <extension>wsdl</extension>
          <mime-type>text/xml</mime-type>
     </mime-mapping>
 
     <mime-mapping>
          <extension>xsd</extension>
          <mime-type>text/xml</mime-type>
     </mime-mapping>
    你現在可以在網址里輸入http://localhost/webservicetest/servlet/testservlet 看到了嗎?axis是使用axis.jar包里的org.apache.axis.transport.http.axisservlet對應用程序進行處理的,基本配置就講到這里。
三、接著我們來說axis中的內核。
1)不使用tomcat引擎運行axis。
       先建立一個腳步文件,對環境變量classpath進行設置要把lib下的那些包文件的路徑全都包括進去,運行:java  org.apache.axis.transport.http.simpleaxisserver  <port>
 2)內部服務處理程序是org.apache.axis.providers.java.rpcprovider,標志出服務所需的方法,然后提供從soap請求消息組成部分的參數。
 3)axis的應用程序端管理功能:
       java  org.apache.axis.client.adminclient 就會列出參數,可供你選擇。我們的例子是:java  org.apache.axis.client.adminclient  -l http://localhost/webservicetest/servlet/testservlet  list 就會顯示出服務列表,返回的是xml文件
4)wsdl2java應用程序可以把wsdl文件創建基于java的程序,如占位程序等
     java  org.apache.axis.wsdl.wsdl2java  <url>
axis的基本內容說到這里
四、具體例子
 1)編寫邏輯程序,簡單如:soaptest.java
    public class soaptest{
        public string getstr(string name){
            return "hello,"+name;
        }
    }
  2) 部署服務,編寫wsdd文件soaptest_deploy.wsdd:
     <deployment name="simapletest" xmlns="http://xml.apache.org/axis/wsdd/"
         xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
         xmlns:xsd="http://www.w3.org/2000/10/xmlschema"
         xmlns:xsi="http://www.w3.org/2000/10/xmlschema-instance">
             <service name="soaptest" provider="java:rpc">
                  <parameter name="classname" value="soaptest"/>
                  <parameter name="allowedmethods" value="getstr"/>
             </service>
    </deployment>
    其中classname參數是你的想部署的類名(全名),allowedmethods是調用的服務的方法,如果有多個方法的話可以用空格分開(如: <parameter name="allowedmethods" value="getstr  getmoney"/>),當用*的時候表示全部。
     好了現在準備部署了,確保環境路徑classpath設置正確,運行:
        java  org.apache.axis.client.adminclient  -l  http://localhost/webservicetest/servlet/testservlet  soaptest_deploy.wsdd
     (這里不懂的話,請參考以上的說明) 
 ok,呵呵,至此,我們已經完成了一個web服務的部署:測試http://localhost/webservicetest/servlet/testservlet  看里面是否多了一個選擇soaptest服務?
      如果不想要服務了那重新編寫一個wsdd文件,內容改為:
<deployment name="simapletest" xmlns="http://xml.apache.org/axis/wsdd/"
         xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
         xmlns:xsd="http://www.w3.org/2000/10/xmlschema"
         xmlns:xsi="http://www.w3.org/2000/10/xmlschema-instance">
            <service name="soaptest"/>
</deployment>
和上面一樣,對比一下就ok了。
五、客戶端測試:
     客戶端我們也可以使用java來進行測試,網上也有資料的,你可以去學習,很簡單的?,F在為了體現web服務的魅力,我用.net平臺來測試吧,客戶端使用c#編寫(先要安裝.net framework sdk):
    1)通過wsdl生成web服務代理,在net平臺下運行:
      wsdl  /l:cs  /protocol:soap  /out:soaptestclient.cs  http://localhost/webservicetest/services/soaptest?wsdl  
        我們通過wsdl得到了一個cs文件soaptestclient.cs(當前目錄),你可以打開cs文件,研究一下里面的代碼,那個getstr(string name)就是我們需要調用的方法,我們的客戶端通過調用該方法就可以調用服務器端的方法,內部的轉化wsdl.exe工具已經幫我們完成了,axis下的wsdl2java工具也是一樣的功能,可以參考我上面所說的關于axis的內核內容
   2)編譯cs文件成程序集dll:
      csc /target:library /r:system.web.services.dll  /r:system.xml.dll soaptestclient.cs
      最后我們等到了一個dll文件soaptestclient.dll,客戶端程序通過調用它就行了
   3)編寫客戶端應用程序soaptestclientapp.cs
      using system;
      
      namespache  jws.client{
         public class soaptestclientapp{
            public soaptestclientapp(){
            }
            public static void main(string[] args){
                if(args.length!=1){
                    console.writeline("usage:soaptestclientapp <name>");
                    environment.exit(1);
                }
                soaptestservice  st_service=new soaptestservice();
                st_service.getstr("wang wenyin");
           }
        } 
     }
4)編譯文件csc  /r:soaptestclient.dll  soaptestclientapp.cs
    運行soaptestclientapp
輸出結果:
     hello,wang wenyin
與預期結果相符。

好了,關于soap開發web服務就說到這里了,希望這篇文章能對大家有所幫助,謝謝了:)有問題的話可以留言,也可以跟我聯系 [email protected]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品欧美| 亚洲伊人第一页| 欧美资源在线观看| 国产精品男人爽免费视频1| 日韩精品免费一线在线观看| 欧美激情啊啊啊| 欧美黑人极品猛少妇色xxxxx| 成人福利视频网| 精品国产一区二区三区久久久狼| 夜夜嗨av色综合久久久综合网| 在线色欧美三级视频| 欧美一区二区三区……| 久久九九国产精品怡红院| 一二美女精品欧洲| 久久99精品视频一区97| 亚洲v日韩v综合v精品v| 国产成人在线亚洲欧美| 色777狠狠综合秋免鲁丝| 91福利视频网| 国产热re99久久6国产精品| www欧美日韩| 欧美午夜精品在线| 欧美亚洲一区在线| 国产在线视频欧美| 精品久久久久久亚洲精品| 俺去了亚洲欧美日韩| 亚洲成av人影院在线观看| 日韩免费看的电影电视剧大全| 欧美精品免费看| 成人免费网站在线| 日韩高清电影好看的电视剧电影| 欧美理论在线观看| 欧美成人午夜免费视在线看片| 91国产高清在线| 亚洲级视频在线观看免费1级| 亚洲最大在线视频| 国产精品一区二区久久| 欧美一级电影免费在线观看| 亚洲一区二区三区乱码aⅴ| 国产成人精品最新| 一本大道香蕉久在线播放29| 2020久久国产精品| 亚洲免费福利视频| 国产精品久久久久国产a级| 日韩av免费网站| 欧美性猛交xxxx乱大交| 国产成人jvid在线播放| 国产精品免费视频xxxx| 欧美性生交xxxxxdddd| 亚洲成人动漫在线播放| 一区二区亚洲精品国产| 91精品国产91久久久久| 91超碰caoporn97人人| 国产日韩欧美在线视频观看| 国产精品一区二区三区久久久| 欧美中文字幕第一页| 色综合天天综合网国产成人网| 久久777国产线看观看精品| 亚洲自拍偷拍在线| 亚洲精品自在久久| 欧美日韩国产精品一区二区三区四区| 97视频在线观看网址| 亚洲激情视频在线| 亚洲精品久久久久中文字幕二区| 成人国产精品av| 久久久成人的性感天堂| 国产一级揄自揄精品视频| 欧美大片免费观看在线观看网站推荐| 亚洲美女精品成人在线视频| 亚洲午夜未满十八勿入免费观看全集| 九九热这里只有精品6| 亚洲成人亚洲激情| 久久免费视频这里只有精品| 亚洲国产精品久久久久秋霞蜜臀| 日韩电影免费在线观看中文字幕| 国产在线精品成人一区二区三区| 亚洲视频在线播放| 日韩精品中文字幕在线播放| 色综合久久久888| 国产国产精品人在线视| 成人两性免费视频| 国产精品一区二区久久久| 中文字幕视频在线免费欧美日韩综合在线看| 北条麻妃一区二区在线观看| 久久躁日日躁aaaaxxxx| 国产精品高潮呻吟久久av野狼| 国产丝袜一区视频在线观看| 色黄久久久久久| 少妇久久久久久| 精品无人区乱码1区2区3区在线| 主播福利视频一区| 欧美久久精品一级黑人c片| 国产精品久久久久久久久久尿| 亚洲精品中文字幕有码专区| 国模视频一区二区| 欧美日韩另类视频| 久久精品国产视频| 色老头一区二区三区| 亚洲肉体裸体xxxx137| 国产视频亚洲视频| 欧美一级电影免费在线观看| 欧美午夜精品在线| 精品免费在线观看| 亚洲一级黄色av| 超碰91人人草人人干| 欧美国产视频一区二区| 亚洲全黄一级网站| 亚洲激情在线视频| 欧美成人精品不卡视频在线观看| 一区二区福利视频| 久久久国产91| 91精品久久久久| 国产精品大片wwwwww| 久久精品国产96久久久香蕉| 深夜福利国产精品| 欧美性在线视频| 欧美美最猛性xxxxxx| 亚洲一区中文字幕| 一本一本久久a久久精品综合小说| 亚洲欧美制服第一页| 欧美日韩免费一区| 亚洲a一级视频| 国产精品视频永久免费播放| 在线观看日韩视频| 日韩精品在线免费观看视频| 国产99视频精品免视看7| 国产一区二区久久精品| 国产99久久久欧美黑人| 国产日韩精品在线| 91高潮精品免费porn| 精品福利在线看| 欧美日韩亚洲激情| 丰满岳妇乱一区二区三区| 欧美怡红院视频一区二区三区| 91精品久久久久久久久久久久久| 久久夜精品va视频免费观看| 久久久免费av| 国产精品视频在线观看| 日韩美女免费观看| 亚洲精品按摩视频| 在线色欧美三级视频| 97精品一区二区视频在线观看| 久久精品国产2020观看福利| 欧美日韩ab片| 中文字幕久热精品在线视频| 亚洲专区在线视频| 九九热这里只有精品6| 精品在线欧美视频| 亚洲国产精品va在线看黑人动漫| 庆余年2免费日韩剧观看大牛| 精品久久中文字幕久久av| 国产国语videosex另类| 中文字幕亚洲一区二区三区五十路| 亚洲成人av片| 992tv成人免费视频| 亚洲欧美另类中文字幕| 中文字幕精品影院| 国产日韩欧美一二三区| 26uuu久久噜噜噜噜| 一本大道久久加勒比香蕉| 69**夜色精品国产69乱| 国产视频在线一区二区| 久久久电影免费观看完整版| 久久精视频免费在线久久完整在线看|