標籤:des cWeb cPage style blog http color io os
前言
本篇是承接上一篇:
[Axis2與Eclipse整合開發Web Service系列之二] Top-Down方式,通過WSDL逆向產生服務端
在上一篇粗略地介紹了如何使用Top-Down的方式建立一個web service . 但是對於如何部署及調用,以及一些細節的部分基本上沒有介紹。
應某些博友的要求, 也適逢自己有空, 接下來就詳細介紹一下整個部分如何進行。
環境準備
JDK 肯定要安裝了, 這個就不多講了。
1. eclipse 3.5.2
對eclipse 版本的要求其實不是很嚴, 但是要按照了wtp 外掛程式。
2. Tomcat6
下載後正常安裝就可以了。
建立Web Service 的步驟
這裡建立一個運算兩個數加法的web service. 給定兩個數, 算出它們的和。
(當然, 這裡只是個例子, 在實際的狀況中,可能是像傳入城市名,得到城市天氣預報的例子 )
1. 建立一個Dynamic Web Project - 命名為webServicePrj
項目結構很簡單, web.xml 的內容也很簡單, 只有配置了首頁面的配置。
2. 在 webServicePrj 上按右鍵, 選擇建立 WSDL
3. 命名為 CalculateSOAP.wsdl
下一步
4 點擊 完成 之後就會在項目的跟路徑下建立一個 CalculateSOAP.wsdl 的檔案,預設以 Design 視圖的方式開啟。
5. 修改方法名 NewOperation 為 AddOperation
6. 修改輸入,輸入參數
點擊紅色部分, 進入編輯的子視圖
7. 修改參數名及添加需要的參數
結果如下:
Output 部分類似處理, 結果如下:
修改完成之後, 儲存。 WSDL 的部分基本上就完成了。
WSDL 只是一個服務的描述, 至於這個服務實際要做的事情,就要產生web service 的代碼了。 就是使用top down 的方式產生Web service.
8. 右鍵 單擊項目, 建立 Web service
9. Next
10. 一直 next , 直到完成, 看看 eclipse 幫我們產生了那些檔案
1) 產生的服務端 Java代碼。
impl 結尾的java 檔案就是寫實際邏輯的地方。
2)自動匯入的axis 的一些jar 包
3)產生的部署的描述 (後面有用)
4)這個web.xml 被修改了。 自動增加了一些axis 的servlet 的配置
5) 在WebContent 下會產生一個 wsdl 目錄和 CalculateSOAPSOAP.wsdl 的檔案。
這個內容和 之前建立的CalculateSOAP.wsdl 類似(所以好的命名方式是之前的wsdl不要加SOAP)
到此, 並沒有結束。還需要把這個 web service 部署起來。
11. deploy 這個webservice 方式有很多種, 簡單的一種方式, 就是在WEB-INF 下建立一個 server-config.wsdd
內容如下:
<?xml version="1.0" encoding="UTF-8"?><deployment xmlns="http://xml.apache.org/axis/wsdd/"xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><globalConfiguration><parameter name="adminPassword" value="admin" /><parameter name="attachments.Directory" value="D:\Tomcat\temp\axis\WEB-INF\attachments" /><parameter name="attachments.implementation"value="org.apache.axis.attachments.AttachmentsImpl" /><parameter name="sendXsiTypes" value="true" /><parameter name="sendMultiRefs" value="true" /><parameter name="sendXMLDeclaration" value="true" /><parameter name="axis.sendMinimizedElements" value="true" /><requestFlow><handler type="java:org.apache.axis.handlers.JWSHandler"><parameter name="scope" value="session" /></handler><handler type="java:org.apache.axis.handlers.JWSHandler"><parameter name="scope" value="request" /><parameter name="extension" value=".jwr" /></handler></requestFlow></globalConfiguration><handler name="LocalResponder"type="java:org.apache.axis.transport.local.LocalResponder" /><handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" /><handler name="Authenticate"type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" /><service name="AdminService" provider="java:MSG"><parameter name="allowedMethods" value="AdminService" /><parameter name="enableRemoteAdmin" value="false" /><parameter name="className" value="org.apache.axis.utils.Admin" /><namespace>http://xml.apache.org/axis/wsdd/</namespace></service><service name="Version" provider="java:RPC"><parameter name="allowedMethods" value="getVersion" /><parameter name="className" value="org.apache.axis.Version" /></service><!--myself webservice--> <service name="CalculateSOAPSOAP" provider="java:RPC" style="wrapped" use="literal"> <parameter name="wsdlTargetNamespace" value="http://localhost:8080/CalculateSOAP/"/> <parameter name="wsdlServiceElement" value="CalculateSOAP"/> <parameter name="schemaUnqualified" value="http://localhost:8080/CalculateSOAP/"/> <parameter name="wsdlServicePort" value="CalculateSOAPSOAP"/> <parameter name="className" value="localhost.CalculateSOAP.CalculateSOAPSOAPSkeleton"/> <parameter name="wsdlPortType" value="CalculateSOAP"/> <parameter name="typeMappingVersion" value="1.2"/> <parameter name="allowedMethods" value="*"/> </service><transport name="http"><requestFlow><handler type="URLMapper" /><handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" /></requestFlow><parameter name="qs:list"value="org.apache.axis.transport.http.QSListHandler" /><parameter name="qs.list"value="org.apache.axis.transport.http.QSListHandler" /><parameter name="qs:method"value="org.apache.axis.transport.http.QSMethodHandler" /><parameter name="qs.method"value="org.apache.axis.transport.http.QSMethodHandler" /><parameter name="qs:wsdl"value="org.apache.axis.transport.http.QSWSDLHandler" /><parameter name="qs.wsdl"value="org.apache.axis.transport.http.QSWSDLHandler" /></transport><transport name="local"><responseFlow><handler type="LocalResponder" /></responseFlow></transport></deployment>
這個檔案, 大部分內容是一樣的。
只是中間的這塊
是從 之前產生的deploy.wsdd 中複製過來的。
到此,開發工作基本完成。
打包、部署war 檔
1. 打包
按右鍵項目, 匯出 war 檔, war 名為webServicePrj.war
2. 將 webServicePrj.war 拷到 tomcat 的 webapps 下
3. 瀏覽器進入: http://localhost:8080/webServicePrj/services
第一個web service 就是我們新加的。
後面兩個是axis 的本身的。
點擊第一個 wsdl 連結。
進入: http://localhost:8080/webServicePrj/services/CalculateSOAPSOAP?wsdl
這就是服務發布的地址(實際開發中當然不會使用 localhost,而用實際的IP 或是網域名稱)
測試測試的方式,當然可以使用[Axis2與Eclipse整合開發Web Service系列之一] 產生Web Service Client(將WSDl 轉化成 Java代碼)
的方式。但是, 簡單來說,可以使用 SoapUI 這個工具來調用。
soapui :http://www.soapui.org/Downloads/
1上是11111
[Axis2與Eclipse整合開發Web Service系列之二] Top-Down方式,通過WSDL逆向產生服務端(續)