亚洲日本香蕉视频,精品亚洲一区二区三区在线播放 ,亚洲国产成人久久http://m.tkk7.com/nbtymm/category/12034.html</br><a ><b><font color=red>共有<script src=http://fastonlineusers.com/online.php?d=bluedavy.blogjava.net></script>人在同時閱讀此Blog</font></b></a>zh-cnFri, 02 Mar 2007 06:42:02 GMTFri, 02 Mar 2007 06:42:02 GMT60使用SOAP開發java web服務http://m.tkk7.com/nbtymm/archive/2006/06/09/51708.htmlnbtnbtFri, 09 Jun 2006 07:51:00 GMThttp://m.tkk7.com/nbtymm/archive/2006/06/09/51708.htmlhttp://m.tkk7.com/nbtymm/comments/51708.htmlhttp://m.tkk7.com/nbtymm/archive/2006/06/09/51708.html#Feedback0http://m.tkk7.com/nbtymm/comments/commentRss/51708.htmlhttp://m.tkk7.com/nbtymm/services/trackbacks/51708.html
本文的預定讀者首先要對j2ee有所了解,熟悉xml,tomcat等基本內容,本文主要是簡單介紹一下web服務的基本內容,怎樣在java web開發中構建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">xyz@cun.edu
????????</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來進行測試,網上也有資料的,你可以去學習,很簡單的。現在為了體現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
與預期結果相符。



nbt 2006-06-09 15:51 發表評論
]]>
主站蜘蛛池模板: 亚洲综合色一区二区三区| 学生妹亚洲一区二区| 亚洲精品中文字幕无码蜜桃| 亚洲国产一二三精品无码| eeuss影院免费92242部| 99久久免费看国产精品| h视频在线观看免费完整版| 午夜成人免费视频| 99久久国产免费-99久久国产免费 99久久国产免费中文无字幕 | 亚洲小说图区综合在线| 成年大片免费视频| 亚洲人成网站在线播放vr| 亚洲人成免费电影| 男女猛烈无遮掩视频免费软件| 日本亚洲欧洲免费天堂午夜看片女人员| 美女黄网站人色视频免费国产| 亚洲精品tv久久久久| 亚洲男人天堂影院| 在线免费观看h片| 真实乱视频国产免费观看| 亚洲色偷偷偷综合网| 久久国产成人精品国产成人亚洲| 亚洲综合另类小说色区| 极品色天使在线婷婷天堂亚洲| 亚洲精品日韩一区二区小说| 暖暖免费日本在线中文| 大学生一级特黄的免费大片视频| 亚洲AV无码一区二区乱子伦 | 一级白嫩美女毛片免费| 国产精彩免费视频| 亚洲色婷婷一区二区三区| 99视频在线免费| 亚洲AV成人一区二区三区观看| 一个人免费观看视频在线中文| 香蕉97超级碰碰碰免费公| 亚洲av午夜成人片精品网站| 久久国产乱子伦免费精品| 亚洲精选在线观看| 免费91麻豆精品国产自产在线观看| 真人做A免费观看| 美女裸体无遮挡免费视频网站|