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

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

實例講解:Java中的SOAP技術應用

2019-11-18 13:09:10
字體:
來源:轉載
供稿:網友

  開始之前,我想就本文即將討論的主題和讀者需要具備的起點知識做一些必需的描敘。本文的主題是討論SOAP技術,我們將盡可能的講得通俗易懂一些,所以,我們引入了一個普通的“Hello World”范例來給讀者說明它們是怎么運作的,讓讀者知道它們的運作方式。我認為,假如光看官方文檔是很難開始學習這門新技術的,官方文檔中包含大量的范例,并解釋了所有的特性和優點,但是沒解釋它們的運作方式。在這篇文章中,我不打算只膚淺的解釋SOAP技術的定義,我們假設讀者熟悉java語言,Web技術,具有xml語言,XML Namespaces,XML Schema的基礎。在這種情況下,理解本文將不存在任何困難。然而,即使沒有這些知識,你也不必擔心,我們將盡可能的解釋得簡單,但是當你開始做自己的SOAP應用程序時會碰到一些問題和麻煩。因此,花費一定時間來學習上面的知識是很有必要的。
  
  從技術的角度來說,有必要提一下我們的調試環境。我們使用的是Windows xp操作系統,安裝有JAVA 2 SDK 1.4.1,Apache SOAP 2.3.1,JAF 1.0.2,JAVAMAIL 1.3.1和Xerces 2.6.0。上面所提及的都能在Tcomcat 4.1.29 jsp/Servlet容器中正常運行。所有的軟件都是免費自由軟件,因此你能夠很輕易的下載它們并自己在任何你喜歡的平臺如Windows或UNIX上安裝它們。Java SDK,JAF和JAVAMAIL位于SUN的官方網站(http://java.sun.com),其他的軟件在Jakarta項目組的官方網站(http://jakarta.apache.org)上有down的??赡苣阍诳吹轿覀冃枰@么多不同的包(package)時已經有點擔心和不安了,但是實際上你不應該擔心這些的。一旦你懂了基礎,那么對你將相當輕易。安裝不是一件很難的事情,你只需要在設置環境變量的時候仔細些,比如CATALINA_HOME, CLASSPATH, JAVA_HOME 等等,所有這些步驟都是手工的。由于我僅僅是想將你的注重力再次集中到它們身上,所以你能很快的就完成以上配置過程。我只是添加下面的一些字符串到Tomcat的bin/setclasspath.bat文件中:
  ...
  set CATALINA_HOME=C:/Tomcat4.1.29
  set CLASSPATH=%JAVA_HOME%/lib/tools.jar
  set CLASSPATH=%JAVA_HOME%/soap-2.3.1/lib/soap.jar
  set CLASSPATH=%CLASSPATH%;%JAVA_HOME%/javamail-1.3.1/mail.jar
  set CLASSPATH=%CLASSPATH%;%JAVA_HOME%/jaf-1.0.2/activation.jar
  set CLASSPATH=%CLASSPATH%;%JAVA_HOME%/xerces-2_6_0/xercesImpl.jar
  set CLASSPATH=%CLASSPATH%;%JAVA_HOME%/xerces-2_6_0/xercesSamples.jar
  set CLASSPATH=%CLASSPATH%;%JAVA_HOME%/xerces-2_6_0/xml-apis.jar
  set CLASSPATH=%CLASSPATH%;%JAVA_HOME%/xerces-2_6_0/xmlParserAPIs.jar
  set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%/common/lib/servlet.jar
  set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%/common/lib/tools.jar
  ...
  
  假如你的安裝路徑(installation paths)和上面使用的不同,你需要更正它們,然后關閉和重啟Tomcat以使它們生效。這樣,你就有為運行SOAP作好了預備。但是現在,我要忘記有關的技術部分,來學一點理論知識。
  
  SOAP意思是簡單對象訪問協議(Simple Object access PRotocol)。的確如它的名字一樣,SOAP是很簡單的。它是一個基于XML的協議,答應程序組件和應用程序彼此使用一種標準的Internet協議--HTTP來通訊。SOAP是一種獨立的平臺,它不依靠程序語言,它是簡單的,彈性的,很輕易擴展的。目前,應用程序能夠彼此使用一種基于DCOM和CORBA技術的遠程過程調用(RPC)來進行相互通訊,但HTTP不被設計為這個目的。RPC在Internet上應用是非常困難的,它們會出現許多兼容性和安全性的問題,因為防火墻和代理服務器通常都會阻斷(block)這些類型的流量。應用程序之間最好的通訊方式是通過HTTP協議,因為HTTP是支持所有Internet瀏覽器和服務器的。基于這個目的,SOAP協議被創建出來。
  
  那么,它們是如何運作的呢?比如,一個應用程序(A)需要和另一個應用程序(B)在SOAP的幫助下進行彼此通訊。它們將使用下面的框架圖來完成這個過程:
  
 實例講解:Java中的SOAP技術應用(圖一)

  這個SOAP信封(SOAP envelope)是一個包含以下內容的XML文檔:
  
 實例講解:Java中的SOAP技術應用(圖二)

  正如你看到的,它是非常簡單的。它看起來確實就象一個普通的信封或者你的email。你想看看它們是如何動作的嗎?下面跟我們一起來吧。其實我們有很多方法是不用SOAP來在創建和運行我們自己的“Hello World”應用程序的,但是因為我們要保持它的簡單性,我會給你一個它運作方式的框架圖(scheme)。
  
  我們的“Hello World”范例會包含一個SOAP Service。我們的SOAP Client將發送它們的名字到該SOAP Service,并試圖得到一些答復或響應。這個SOAP Service需要部署到一個SOAP Admin的工具,以至重定位所有請求的SOAP(Proxy) RPC Router能夠知道它們應該使用哪種服務來運作??偠灾?,這個是以下面的方式來運作的:
  
 實例講解:Java中的SOAP技術應用(圖三)

  現在,我們來一步步的看看到底發生了什么。在Step 1里,HelloWorldClient將連接一個SOAP RPC Router,請求我們的SOAP Service并將包含我們名字的一個字符串傳遞給它。該SOAP RPC Router會檢查是否它已經部署了這個SOAP Service。假如它被發現是被部署的,那么它將傳遞數據到這個SOAP Service并調用特定的方法,這個是Step 2。然后SOAP Service方法會被執行,將返回某個字符串值(該值就是SOAP Client的答復或者響應)(Step 3)。在Step4中,SOAP RPC Router將僅僅只是重定向這個數據到SOAP Client。所有在Step1和Step4里傳輸的數據是通過SOAP Envelope來完成的。正如你所看到的,算法是相當簡單的,因此我們只預備關心實際的代碼。
  
  首先,我們要創建一個SOAP Service。下面是它的代碼,請不要忘記將它放入HelloWorld/ 目錄中(必須被包含在你的CLASSPATH中):
  
  1: // SOAPService.java
  2: package HelloWorld;
  3: public class SOAPService {
  4: public String sayHi(String x) {
  5: return("Hello my friend, " + x + "! Glad to see you!");
  6: }
  7: }
  
  添加任何注釋也是很輕易的。要編譯它,只需要用下列命令:
  
  javac SOAPService.java
  
  第二步,一旦我們預備好了SOAP Service,我們需要用SOAP Service Manager來部署它。這個可以通過很多方式來實現,但是為了能讓初學SOAP的讀者更輕易理解SOAP,我提供了一個最輕易的方式。我們假設你的Web Server(Tomcat或其他)已經正常運行,并且你已經正確安裝了SOAP。那么當瀏覽器訪問http://localhost:8080/soap/,你會看見Apache SOAP的歡迎頁面。點擊Run the admin client ,然后 Deploy。你會得到一個屏幕顯示,在那里你需要填入ID,Scope,Method,Provider Type和JAVA Provider的信息到表單域中。你能忽略其他所有的表單域,除非你真的需要它們的信息。我們的“HelloWorld”例子不需要它們,所以,我們填的下面的值:
  
  ID: urn:HelloWorld_SOAPService
  Scope: application
  Methods: sayHi
  Provider Type: java
  Java Provider - Provider Class: HelloWorld.SOAPService
  Java Provider - Static? No
  
  一些注釋:ID是我們要從SOAP Client標識我們的SOAP Service的唯一名字。Method包含SOAP Service提供的一系列方法。JAVA Provider-Provider Class是SOAP Service Java類的名字。
  
  現在,點擊Deploy 按鈕,那么你的服務會被部署。再次強調,請注重正確設置CLASSPATH環境變量。然后,你的HelloWorld.SOAPService類能夠被找到,并且所有必需的jar包也能被找到。這是個幾乎每個人都會犯的普通錯誤?,F在,你能夠點擊 List ,將會看見你的服務已經被部署進來。恭喜!
  
  最后,讓我們來創建一個SOAP Client。代碼看起來有點復雜,但是在現實中不會只有這么點長。
  
  1: // HelloWorldClient.java
  2: import java.io.*;
  3: import java.net.*;
  4: import java.util.*;
  5: import org.apache.soap.*;
  6: import org.apache.soap.rpc.*;
  7: public class HelloWorldClient {
  8: public static void main(String[] arg) throws Exception {
  9: Call c = null;
  10: URL url = null;
  11: Vector params = null;
  12: Response rep = null;
  13: String ourName = "Superman";
  14: String ourUrn = "urn:HelloWorld_SOAPService";
  15: String ourMethod = "sayHi";
  16: url = new URL("http://localhost:8080/soap/servlet/
  rpcrouter");
  17: System.out.println("Passing to our deployed "+ourUrn+"
  our name ("+ourName+"): ");
  18: c = new Call();
  19: c.setTargetObjectURI(ourUrn);
  20: c.setMethodName(ourMethod);
  21: c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
  22: params = new Vector();
  23: params.addElement(new Parameter("ourName", String.class,
  ourName, null));
  24: c.setParams(params);
  25: System.out.print("and its answer is: ");
  26: rep = c.invoke(url, "");
  27: if (rep.generatedFault()) {
  28: Fault fault = rep.getFault();
  29: System.out.println("/nCall failed!");
  30: System.out.printl

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区美女xx视频| 在线a欧美视频| 国产日韩欧美中文在线播放| 日韩三级成人av网| 少妇高潮久久77777| 中文字幕日韩欧美在线| 亚洲一区二区中文| 国产精品久在线观看| 欧美极品xxxx| 国产日韩av在线| 欧美日韩性视频在线| 国语自产精品视频在线看| 精品无码久久久久久国产| 久久久久久久久综合| 高清欧美性猛交xxxx黑人猛交| 最新国产精品拍自在线播放| 久久成人18免费网站| 欧美国产中文字幕| 福利视频导航一区| 亚洲一区av在线播放| 久久亚洲综合国产精品99麻豆精品福利| 日韩小视频网址| 欧美日韩亚洲系列| 欧美激情a∨在线视频播放| 国产69久久精品成人看| 欧美限制级电影在线观看| 欧美美女操人视频| 国产精品免费视频xxxx| 亚洲天堂网站在线观看视频| 欧美资源在线观看| 色噜噜狠狠狠综合曰曰曰88av| 日韩影视在线观看| 亚洲欧美综合另类中字| 国产精品成人在线| 亚洲天堂成人在线视频| 91久久国产婷婷一区二区| 亚洲一区美女视频在线观看免费| 国产免费一区二区三区在线能观看| 精品偷拍各种wc美女嘘嘘| 日韩电影在线观看免费| 久久久伊人欧美| 欧美第一黄色网| 91亚洲精品视频| 久久久久久久久久久91| 久久久精品视频成人| 久久久久久久久网站| 精品国产区一区二区三区在线观看| 国产精品一区二区久久久久| 亚洲级视频在线观看免费1级| 亚洲qvod图片区电影| 久久久影视精品| 欧美日韩成人免费| 一区二区三区四区在线观看视频| 午夜精品视频网站| 亚洲一区二区三区视频| 中文字幕最新精品| 91精品久久久久久久| 国产91色在线| 欧美激情综合亚洲一二区| 中文字幕精品一区久久久久| 日韩在线资源网| 91九色精品视频| 久久九九精品99国产精品| 欧美壮男野外gaytube| 国产成人av网址| 欧美老少配视频| 日韩精品视频在线观看免费| 在线日韩日本国产亚洲| 国产精品678| 欧美俄罗斯乱妇| 亚洲欧美日韩一区二区在线| 97av在线视频| 亚洲高清在线观看| 综合激情国产一区| 久久久久久久一| 欧美电影在线观看| 91精品国产综合久久香蕉| 国产精品久久久久久av福利| 国产一区二区三区直播精品电影| 亚洲香蕉成视频在线观看| 亚洲男人的天堂在线| 欧日韩在线观看| 欧美裸体男粗大视频在线观看| 精品国内产的精品视频在线观看| 日韩美女写真福利在线观看| 亚洲天堂av高清| 欧美精品成人91久久久久久久| 成人国产亚洲精品a区天堂华泰| 91精品久久久久久综合乱菊| 成人免费在线网址| 欧美电影在线观看完整版| 国产激情视频一区| 精品毛片三在线观看| 欧美第一页在线| 亚洲精品一区二区久| 亚洲第一免费播放区| 自拍偷拍亚洲精品| 日韩女在线观看| 精品久久香蕉国产线看观看gif| 有码中文亚洲精品| 国产精品成人av性教育| 国产精品色午夜在线观看| 26uuu另类亚洲欧美日本一| 国产亚洲欧美一区| 最新国产成人av网站网址麻豆| 色悠悠国产精品| 日韩中文字幕在线视频播放| 久久久噜噜噜久久中文字免| 欧美极品欧美精品欧美视频| 日韩亚洲成人av在线| 国产精品在线看| 亚洲福利精品在线| 九九久久综合网站| 黑人极品videos精品欧美裸| 国产99久久精品一区二区 夜夜躁日日躁| 91沈先生作品| 日韩二区三区在线| 日韩精品在线观看网站| 亚洲视频综合网| 国产亚洲成av人片在线观看桃| 亚洲人成电影在线观看天堂色| 国产精品久久激情| 欧美性xxxxhd| 亚洲精品黄网在线观看| 欧美日韩日本国产| 亚洲日本中文字幕| 亚洲xxxx做受欧美| 日韩国产高清污视频在线观看| 国产欧美一区二区三区在线看| 欧美大荫蒂xxx| 亚洲欧美在线看| 视频一区视频二区国产精品| 国产精品高潮呻吟久久av无限| 国产精品视频一区国模私拍| 久久伊人91精品综合网站| 国产日韩欧美综合| 国产成人精品a视频一区www| 亚洲人成电影在线观看天堂色| 热re91久久精品国99热蜜臀| 视频一区视频二区国产精品| 久久99久久亚洲国产| 日韩av影视综合网| 欧美成人小视频| 在线看日韩欧美| 国产mv久久久| 97人洗澡人人免费公开视频碰碰碰| 国产美女久久久| 国内精品久久久久久中文字幕| 欧美高清第一页| 国产精品1234| 久久久久久久国产精品视频| 国产成人精品免高潮在线观看| 欧美激情久久久| 成人网在线观看| 成人免费黄色网| 欧美日韩国产一区二区三区| 精品亚洲精品福利线在观看| 国产成人综合久久| 亚洲网在线观看| 日韩电视剧在线观看免费网站| 91社区国产高清| 日韩男女性生活视频| 91欧美精品午夜性色福利在线| 亚洲欧美日韩中文在线|