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

首頁 > 學院 > 開發設計 > 正文

Axis 1.1 for Java進行Web Services開發

2019-11-18 12:50:50
字體:
來源:轉載
供稿:網友

  用Axis 1.1 for java進行Web Services開發
  
  下面的所有幾乎來自Axis1.1的文檔。但不完全來自文檔,本人做了部分修改,這些修改完全出自國內讀者的需要。
  
  什么是SOAP?
  
  SOAP是一個基于xml的用于應用程序之間通信數據編碼的傳輸協議。最初由微軟和Userland Software提出,隨著不斷地完善和改進,SOAP很快被業界廣泛應用,目前完全發布版本是1.1。在其發展過程中,W3C XML標準工作小組積極促成SOAP成為一個真正的開放標準。在寫作此文檔之時,SOAP1.2草案已經發布,1.2對1.1中相對混亂的部分做了改進。
  
  SOAP被廣泛作為新一代跨平臺、跨語言分布計算Web Services的重要部分。
  
  這里太膚淺的說明,請參閱我的整理《一步一步學習SOAP》。
  
  什么是Axis?
  
  Axis本質上就是一個SOAP引擎,提供創建服務器端、客戶端和網關SOAP操作的基本框架。Axis目前版本是為Java編寫的,不過為C++的版本正在開發中。
  
  但Axis并不完全是一個SOAP引擎,它還包括:
  
  是一個獨立的SOAP服務器。
  
  是一個嵌入Servlet引擎(例如Tomcat)的服務器。
  
  支持WSDL。
  
  提供轉化WSDL為Java類的工具。
  
  提供例子程序。
  
  提供TCP/ip數據包監視工具。
  
  Axis是第三代Apache SOAP,從2000年起,SOAP v2開發小組開始討論如何讓Axis更加靈活、可配置,以及能夠處理SOAP和來自W3C的各種XML標準。通過不斷地討論和代碼編寫,Axis目前取得了如下成果:
  
  速度提高。 Axis通過基于事件的SAX對XML文檔進行處理,從而在速度和效率上比Apache SOAP有所提高。
  
  靈活性提高。
  
  穩定性提高。
  
  提供面向組件的部署。
  
  提供一個簡潔的傳輸抽象框架。其核心引擎完全于傳輸方式獨立。從而使基于何種協議傳輸的選擇更加靈活。
  
  支持WSDL。包括到處WSDL和客戶代理生成等。
  
  在目前發行1.1版本中有什么東西?
  
  SOAP1.1/1.2引擎。
  
  靈活的配置和部署系統。
  
  支持及時自動生成SOAP服務(JWS)。
  
  支持所有的基本數據類型,為自定義串行操作提供類型映射系統。
  
  JavaBean的自動串行操作,包括將自定義屬性類型映射到XML的屬性和元素。
  
  RPC和基于消息的SOAP服務提供者。
  
  從部署好的服務自動生成WSDL。
  
  WSDL2Java工具可以從WSDL描述文件中產生相應的客戶和服務器端SOAP操作框架。
  
  初步提供安全擴展,能夠與Servlet2.2安全集成。
  
  通過HTTP Cookie和與傳輸無關的SOAP頭信息提供會話跟蹤。
  
  初步支持帶附件的SOAP消息。
  
  在EJB方面提供把EJB作為Web服務的訪問途經。
  
  基于Servlet的HTTP傳輸。
  
  基于JMS的傳輸。
  
  獨立的服務器(但需要HTTP 服務器和Servlet容器支持)。
  
  提供客戶端、服務器端相關應用程序的樣例。
  
  Axis的運行需要如下組件包
  
  axis.jar
  
  jaxrpc.jar
  
  saaj.jar
  
  commons-logging.jar
  
  commons-discovery.jar
  
  wsdl4j.jar
  
  符合JAXP-1.1的XML處理器。
  
  一步一步開始用Axis進行Web Services操作
  
  下面給出一段簡單的調用Web Services方法的客戶端代碼(由于原文檔中直接用導入包的方式初學者不易了解那個類在那個包中,所以下面我做了一些簡單的修改,希望能給學習者清楚的思路):
  
  public class TestClient {
  
  public static void main(String[] args) {
  
  try{
  
  String endpoint="http://localhost:8080/axis/SayHello.jws?wsdl";// 調用的web服務的url地址,這里是一個http請求,希望得到的結果是wsdl文檔。
  
  org.apache.axis.client.Service service=new org.apache.axis.client.Service();//建立請求服務框架實例。
  
  /*
  
  * org.apache.axis.client.Service實現JAX-RPC's javax.xml.rpc.Services接口
  
  * 該接口充當產生下面提到的org.apache.axis.client.Call實例
  
  * 的角色。
  
  */
  
  org.apache.axis.client.Call call=(org.apache.axis.client.Call)service.createCall();//從框架中生成一個維護調用的實例。
  
  /*
  
  * org.apache.axis.client.Call實現了JAX-RPC's javax.xml.rpc.Call接口。
  
  */
  
  call.setTargetEndpointAddress(new java.net.URL(endpoint));
  
  call.setOperationName(new javax.xml.namespace.QName("http://www.edu-edu.com.cn/luopc/ws","echoString"));//設置需要調用的函數名稱
  
  String result=(String)call.invoke(new Object[]{"hello!"});
  
  System.out.PRintln(result);
  
  }catch(Exception e){
  
  System.err.println(e.toString());
  
  }
  
  }
  
  }
  
  上面的代碼可能和原文檔中不同,并且在名稱空間、函數多態上會給用戶造成糊涂。不過別急,我在翻譯手冊的同時會加入很多解釋的代碼,假如哪位純粹看不懂可以通過郵件獲取幫助:luopc@edu-edu.com.cn ,郵件主題必須是我提供的文檔名稱。
  
  通過上面的調用代碼,最終生成向服務器請求SOAP信息包,具體XML內容如下:
  
  <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:echoString xmlns:ns1="http://www.edu-edu.com.cn/luopc/ws">  <arg0 xsi:type="xsd:string">Hello!</arg0> </ns1:echoString> </SOAP-ENV:Body></SOAP-ENV:Envelope>
  
  這里我不再多少,細心的朋友請從代碼中找相應的對應信息來進行自己的邏輯理解。至于SOAP協議在我以后的翻譯文檔中會加入進去。
  
  從上面的代碼中我們在調用的時候輸入了參數new Object[]{“hello!”}。然后從生成的SOAP請求包中可以看到自動序列化成<arg0 xsi:type="xsd:string">Hello!</arg0>。你可以看到參數名稱為arg0,類型為xsd:string。其實在Axis客戶端我們可以直接通過具體的方法來設置每一個參數名稱、類型以及返回值類型。如下代碼:
  
  call.addParameter("testParam",  org.apache.axis.Constants.XSD_STRING,  javax.xml.rpc.ParameterMode.IN);call.setReturnType(org.apache.axis.Constants.XSD_STRING);
  
  加入上面的代碼之后生成如下的SOAP信息:
  
  <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:echoString xmlns:ns1="http://www.edu-edu.com.cn/luopc/ws">  <testParam xsi:type="xsd:string">Hello!</testParam> </ns1:echoString> </SOAP-ENV:Body></SOAP-ENV:Envelope>
  
  可以作簡單的對比。
  
  也許你會迷惑設置參數名稱和不設置參數名稱有什么區別的疑問。這里作簡單的解釋:
  
  1. 為什么要call.setReturnType(org.apache.axis.Constants.XSD_STRING)?
  
  上面你可以調用或者可以不調用,但當返回結果中沒有標明數據類型時Axis就不知道如何進行數據類型轉換。當然假如返回類型你很清楚并且返回應答SOAP的結果中表明了相應的數據類型你便可以不進行上面的函數調用。
  
  2. 為什么要設置參數名稱和類型?
  
  好了,下在你知道了如何調用Web Services了,下面告訴你如何寫作和發布Web Services。
  
  通過Axis發布Web Services
  
  這里寫作一個簡單的類,然后一步一步進行發布。希望用戶能夠從中理出一些思路來。我在其他的關于Web Services的文章中會專門針對Web Services的通用發布方法。雖然Web Services牽涉到很多復雜的知識,但請大家不要感覺到這些操作簡單,也許你已經有很多疑問,沒關系,記下你的疑問,不斷的投試。
  
  public class SayHello {  public String echoString(String hello){    return hello;  }}
  
  哈哈,這個類是不是太簡單了。
  
  一步一步來。
  
  Axis提供兩種將Java類發布成Web Services的途徑,即即時快速自動發布和通過配置文件進行發布。我們首先從最輕易部署的入手。
  
  JWS----即時部署
  
  簡單說就是將自己寫的Java類源文件按一定的規則Copy到特定的目錄下便可自行被Axis部署。具體步驟如下:
  
  將上面寫的SayHello.java復制到axis目錄下。
  
  改名為SayHello.jws。
  
  注重:在你寫的類中不能有具體包的信息,因為這正是Axis即時部署不支持的。
  
  運行我們前面寫的客戶端進行測試,運行結果是hello!。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩av在线| 欧美精品久久久久久久久久| 日韩激情视频在线播放| 热久久99这里有精品| 高清欧美性猛交xxxx| 国外色69视频在线观看| 热99精品只有里视频精品| 久久久免费精品视频| 亚洲va久久久噜噜噜久久天堂| 亚洲成在人线av| 韩国v欧美v日本v亚洲| 久久综合久中文字幕青草| 久久久久亚洲精品| 欧美人与性动交a欧美精品| 狠狠色香婷婷久久亚洲精品| 久久国产精品久久久久久| 性色av一区二区三区红粉影视| 久久久久久国产精品美女| 欧美电影在线观看完整版| 日韩一区二区久久久| 国产999精品| 8x海外华人永久免费日韩内陆视频| 久久夜色撩人精品| 高清一区二区三区日本久| 国产视频在线一区二区| 色多多国产成人永久免费网站| 亚洲欧美日韩天堂| 国产欧美日韩免费| 欧美专区在线视频| 国产精品揄拍500视频| 日本a级片电影一区二区| 97精品一区二区视频在线观看| 欧美激情视频三区| 久久99久久亚洲国产| 97视频网站入口| 美女久久久久久久久久久| 欧美国产一区二区三区| 久久全球大尺度高清视频| 欧美性生交xxxxx久久久| 国产丝袜精品第一页| 亚洲伦理中文字幕| 亚洲国产精品国自产拍av秋霞| 成人国产精品免费视频| 欧美最顶级丰满的aⅴ艳星| 丝袜美腿精品国产二区| 久久精品中文字幕免费mv| 日韩高清中文字幕| 亚洲国产成人精品电影| 久久久久北条麻妃免费看| 深夜福利91大全| 亚洲人在线观看| 国产精品999999| 中日韩美女免费视频网址在线观看| 久久久久久久久久久av| 欧美老女人xx| 日韩中文av在线| 日韩精品免费在线视频| 久久亚洲国产精品| 亚洲性线免费观看视频成熟| 亚洲精品一区在线观看香蕉| 久久久久久久一区二区三区| 欧美福利在线观看| 中文字幕综合一区| 91麻豆国产语对白在线观看| 亚洲美女久久久| 亚洲福利视频在线| 日韩av一区二区在线观看| 欧美亚洲视频一区二区| 亲子乱一区二区三区电影| 久久成人精品视频| 亚洲欧美制服丝袜| 欧美亚洲视频在线观看| 一区二区三区四区视频| 亚洲精品按摩视频| 国产精品美女主播在线观看纯欲| 国产精品视频一| 色妞色视频一区二区三区四区| 91免费福利视频| 久久精品成人欧美大片古装| 国产精品狼人色视频一区| 国产精品视频免费在线观看| 国产福利视频一区| 国产美女精品免费电影| 日韩在线小视频| 欧美成人在线免费视频| 精品美女永久免费视频| 91国产高清在线| 国产精品一区二区三区成人| 97久久精品人搡人人玩| 日韩成人激情在线| 国产精品入口福利| 欧美黄色三级网站| 亚洲天堂男人的天堂| 日韩av资源在线播放| 亚洲精品白浆高清久久久久久| 日韩欧美在线视频日韩欧美在线视频| 日韩精品在线观| 精品无码久久久久久国产| 久久久亚洲影院你懂的| 久久久久久久国产精品视频| 色悠悠久久久久| 欧美一性一乱一交一视频| 日韩中文视频免费在线观看| 成人午夜黄色影院| 精品久久久久国产| 国产三级精品网站| 亚洲电影免费观看高清| 久久久久久久av| 亚洲人在线观看| 国产精品国产三级国产aⅴ浪潮| 国产精品久久在线观看| 亚洲午夜未满十八勿入免费观看全集| 欧美国产日韩二区| 国产精品www网站| 91高清视频免费| 亚洲在线一区二区| 国产精品爱啪在线线免费观看| 亚洲成人网久久久| 国色天香2019中文字幕在线观看| 日韩天堂在线视频| 中文字幕av一区二区三区谷原希美| 中文字幕最新精品| 日韩一区二区久久久| 日本精品免费观看| 亚洲精品美女久久| 国产精品无码专区在线观看| 狠狠久久亚洲欧美专区| 2019中文字幕在线观看| 国产成人精品av| 777精品视频| 久久精品成人欧美大片古装| 中文字幕在线看视频国产欧美在线看完整| 亚洲综合大片69999| 欧美色视频日本版| 久久久999国产| 欧美日韩色婷婷| 久久成人这里只有精品| 国产精品你懂得| 国产日本欧美一区二区三区在线| 精品国产一区二区三区久久狼5月| 久久免费视频在线| 一区二区三区视频免费在线观看| 姬川优奈aav一区二区| 91av在线播放| 青草青草久热精品视频在线观看| 久久综合网hezyo| 美女国内精品自产拍在线播放| 日本国产精品视频| 亚洲四色影视在线观看| 国产精品吴梦梦| 国产精品爽爽ⅴa在线观看| 欧美福利视频在线观看| 57pao国产成人免费| 亚洲欧美一区二区三区情侣bbw| 中文字幕自拍vr一区二区三区| 国产精品久久久久久影视| 亚洲国产精品视频在线观看| 日韩资源在线观看| 亚洲精选中文字幕| 亚洲国产一区二区三区四区| 亚洲成人久久一区| 疯狂做受xxxx欧美肥白少妇| 国产在线精品自拍| 一区二区亚洲欧洲国产日韩|