偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用axis開發(fā)webservice詳解

開發(fā) 后端
本節(jié)主要用于介紹使用axis開發(fā)webservice,包括服務(wù)端的創(chuàng)建、webservice的部署、客戶端的調(diào)用。

摘要:本節(jié)主要用于介紹使用axis開發(fā)webservice,包括服務(wù)端的創(chuàng)建、webservice的部署、客戶端的調(diào)用。

preparation:

說(shuō)明:相關(guān)的可能要了解SOAP(簡(jiǎn)單對(duì)象訪問協(xié)議)、WSDL(web服務(wù)描述語(yǔ)言)、XML(可擴(kuò)展標(biāo)記語(yǔ)言)、axis(阿帕奇可擴(kuò)展交互系統(tǒng))等相關(guān)知識(shí)。

1.下載axis的jar包,請(qǐng)到apache官網(wǎng)或者在百度自行下載,然后導(dǎo)入jar包,不清楚的話導(dǎo)入所有的jar包就好了。(本人用的是axis1的版本,因?yàn)轫?xiàng)目中用的是axis1的版本)

2.webservice客戶端生成工具genclient.bat(后面會(huì)對(duì)這個(gè)工具做一個(gè)簡(jiǎn)單的說(shuō)明)

之前介紹沒有說(shuō)明本機(jī)的環(huán)境,現(xiàn)在把本機(jī)環(huán)境羅列一下:

系統(tǒng):XP myeclipse:6.5 tomcat:5.X JDK:1.5

生成webservice的方式有XFire、Jax-WS、axis等,使用axis調(diào)用webservi有三種方式:動(dòng)態(tài)調(diào)用接口、使用動(dòng)態(tài)代理Dynamic Proxy、使用從WSDL生成的存根generated Stubs from Service WSDL description,由于本人工作中使用的是axis,調(diào)用webservice的方式用到的有動(dòng)態(tài)調(diào)用接口、使用從WSDL生成的存根generated Stubs from Service WSDL description,故本節(jié)只介紹用axis調(diào)用webservice的這兩種方式。后續(xù)的拓展部分根據(jù)需要再說(shuō)。

start:

***步:服務(wù)器端的開發(fā)

(1)開發(fā)java文件

代碼如下:

接口文件:IBbossGroupInfoService.java

  1. package com.asiainfo.b2p.soap.interfaces;   
  2.   
  3. import java.rmi.RemoteException;  
  4. public interface IBbossGroupInfoService {  
  5.   
  6.     // 根據(jù)集團(tuán)編號(hào)查詢集團(tuán)基本信息  
  7.     /**  
  8.      * 集團(tuán)編號(hào) GROUP_NUM 集團(tuán)名稱 GROUP_NAME 公司地址 CO_ADDR 集團(tuán)狀態(tài) GROUP_STATE 集團(tuán)開戶時(shí)間  
  9.      * START_TIME 傳真 FAX 企業(yè)網(wǎng)址 WEB_URL 證件類型 CARD_TYPE 證件號(hào)碼 CARD_CODE  
  10.      * 公司郵編CO_POSTCODE 聯(lián)系電話 TEL_NUM 法人代表名稱 PERSON_NAME 發(fā)展類型 DEVELOP_TYPE  
  11.      * 地區(qū)編碼REGION_ID regionId  
  12.      *   
  13.      * @throws Exception  
  14. */  
  15.     public abstract String groupInfo(long groupNo) throws Exception,  
  16.             RemoteException;   
  17.     // 根據(jù)集團(tuán)編號(hào)查詢集團(tuán)訂購(gòu)歷史  
  18.     public abstract String groupSubHistoryInfo(long groupNo) throws Exception;  
  19. }  

實(shí)現(xiàn)類:IBbossGroupInfoServiceImpl.java

  1. package com.asiainfo.b2p.soap.impl; 
  2.  
  3. import org.apache.commons.logging.Log; 
  4. import org.apache.commons.logging.LogFactory; 
  5. import com.asiainfo.b2p.soap.interfaces.IBbossGroupInfoService; 
  6.  
  7. /** 
  8.  * @Product esop_dev 
  9.  * @FileName IBbossGroupInfoServiceImpl.java 
  10.  * @History TODO 根據(jù)集團(tuán)編號(hào),查詢集團(tuán)基本信息、集團(tuán)用戶信息、集團(tuán)訂購(gòu)歷史 
  11.  * @Version 1.0.0 
  12.  * @Date Nov 22, 2011 
  13.  * @Author pantaipeng 
  14.  * @Content 最初版本 
  15. */ 
  16. public class IBbossGroupInfoServiceImpl implements IBbossGroupInfoService { 
  17.     private static transient Log log = LogFactory 
  18.             .getLog(IBbossGroupInfoServiceImpl.class); 
  19.  
  20.  
  21.     // 根據(jù)集團(tuán)編號(hào)查詢集團(tuán)基本信息 
  22.     public String groupInfo(long groupNo) throws Exception, RemoteException { 
  23.         log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>集團(tuán)編號(hào)=" + groupNo); 
  24.         //方法體我省略了,為了測(cè)試我僅加入一句打印語(yǔ)句 
  25.         System.out.println("我是一個(gè)公共的方法,作用是根據(jù)集團(tuán)編號(hào)查詢集團(tuán)基本信息"); 
  26.         String xml="<message>public_groupInfo</message>";//為了測(cè)試,返回的信息我也是隨便寫的一個(gè)字符串 
  27.         return xml; 
  28.     } 
  29.  
  30.     // 根據(jù)集團(tuán)編號(hào)查詢集團(tuán)訂購(gòu)歷史 
  31.     public String groupSubHistoryInfo(long groupNo) throws Exception { 
  32.  
  33.         log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>集團(tuán)編號(hào)=" + groupNo); 
  34.         //方法體我省略了,為了測(cè)試我僅加入一句打印語(yǔ)句 
  35.         System.out.println("我是一個(gè)公共的方法,作用是根據(jù)集團(tuán)編號(hào)查詢集團(tuán)訂購(gòu)歷史"); 
  36.         String xml="<message>public_groupSubHistoryInfo</message>";//為了測(cè)試,返回的信息我也是隨便寫的一個(gè)字符串 
  37.         return xml; 
  38.     } 

說(shuō)明:為了更加的接近實(shí)際的開發(fā),這個(gè)是本機(jī)上運(yùn)行的程序,實(shí)現(xiàn)的功能是通過一個(gè)編號(hào)查詢相關(guān)信息拼成一個(gè)字符串,方法體的部分我刪除了,你需要用這個(gè)代碼的話,直接拷貝修改包名稱就可以直接用了。

(2)wsdd文件

wsdd文件只需加入一列幾行(前提是你之前已經(jīng)有wsdd文件了,沒有的話可以在下載的apache的demo中拷貝一個(gè)):

  1. <service name="GroupInfoService" type=""  provider="java:RPC"> 
  2. <parameter name="className" value="com.asiainfo.b2p.soap.impl.IBbossGroupInfoServiceImpl" ></parameter> 
  3. <parameter name="allowedMethods" value="*"/> 
  4. </service> 

這個(gè)文件放在項(xiàng)目的WEB-INF下面。<service>標(biāo)簽的name屬性是發(fā)布的webservice的名稱,可以自己命名,***個(gè)<parameter>標(biāo)簽的value屬性指定實(shí)現(xiàn)類的完整路徑,包括類名。其他的地方默認(rèn)就好。
(3)配置web.xml文件

  1. <servlet> 
  2.   <servlet-name>AxisServlet</servlet-name> 
  3.   <display-name>Apache-Axis Servlet</display-name> 
  4.   <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> 
  5. </servlet> 
  6. <servlet-mapping> 
  7.   <servlet-name>AxisServlet</servlet-name> 
  8.   <url-pattern>/services/*</url-pattern> 
  9. </servlet-mapping> 

指定處理類以及映射就好,如果像這樣配置的話,后面再寫webservice的話,這個(gè)文件就不用再配置了。

第二步:客戶端的開發(fā)

(1).動(dòng)態(tài)調(diào)用接口

代碼如下:

  1. package test.webserviceclient; 
  2.  
  3. import java.net.MalformedURLException; 
  4. import java.net.URL; 
  5. import java.rmi.RemoteException; 
  6. import javax.xml.rpc.ParameterMode; 
  7. import javax.xml.rpc.ServiceException; 
  8. import org.apache.axis.client.Call; 
  9. import org.apache.axis.encoding.XMLType; 
  10.  
  11. public class Test { 
  12.     /** 
  13.      * 通過genClient.bat文件生成的webservice客戶端調(diào)用webservice服務(wù)的步驟如下: 
  14.      * 1.創(chuàng)建service對(duì)象  
  15.      * 2.創(chuàng)建url對(duì)象  
  16.      * 3.創(chuàng)建call對(duì)象, 
  17.      * 4.調(diào)用webservice的方法 
  18. */ 
  19.     public static void test1() { 
  20.         try { 
  21.             // 1.創(chuàng)建service對(duì)象,通過axis自帶的類創(chuàng)建 
  22.             org.apache.axis.client.Service service = new org.apache.axis.client.Service(); 
  23.  
  24.             // 2.創(chuàng)建url對(duì)象 
  25.             String wsdlUrl = "http://10.10.146.82:8080/esop_dev/services/GroupInfoService?wsdl";//請(qǐng)求服務(wù)的URL 
  26.             URL url = new URL(wsdlUrl);//通過URL類的構(gòu)造方法傳入wsdlUrl地址創(chuàng)建URL對(duì)象 
  27.  
  28. // 2.創(chuàng)建服務(wù)方法的調(diào)用者對(duì)象call,設(shè)置call對(duì)象的屬性 
  29.             Call call = (Call) service.createCall(); 
  30.             call.setTargetEndpointAddress(url);//給call對(duì)象設(shè)置請(qǐng)求的URL屬性 
  31.             String serviceName = "groupInfo"
  32.             call.setOperationName(serviceName);//給call對(duì)象設(shè)置調(diào)用方法名屬性 
  33.             call.addParameter("groupNo", XMLType.XSD_LONG, ParameterMode.IN);// 給call對(duì)象設(shè)置方法的參數(shù)名、參數(shù)類型、參數(shù)模式 
  34.             call.setReturnType(XMLType.SOAP_STRING);// 設(shè)置調(diào)用方法的返回值類型 
  35.  
  36. //4.通過invoke方法調(diào)用webservice 
  37.             long groupNo = 2100000014L; 
  38.             String res = (String) call.invoke(new Object[] { groupNo });//調(diào)用服務(wù)方法 
  39.             System.out.println(res); 
  40.         } catch (MalformedURLException e) { 
  41.             e.printStackTrace(); 
  42.         } catch (ServiceException e) { 
  43.             e.printStackTrace(); 
  44.         } catch (RemoteException e) { 
  45.             e.printStackTrace(); 
  46.         } 
  47.     } 
  48.  
  49.     public static void main(String[] args) { 
  50.         test1(); 
  51.     } 

代碼中的注釋很詳細(xì),我就不介紹了。

(2).使用從WSDL生成的存根generated Stubs from Service WSDL description

***步:配置genclient.bat文件

右鍵單擊“編輯”打開bat文件如下(為了便于說(shuō)明,每行的意思我就直接寫在后面了):

set Axis_Lib=E:\esop\lib -----指定工程的lib目錄
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% -----默認(rèn)
set Output_Path=E:\esop\src -----指定工程的src目錄
set Package=com.asiainfo.maks.webservices.pbosswebclient -----指定生成的四個(gè)文件的存放位置
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% ----- 默認(rèn)http://10.10.146.82:8080/esop_dev/services/GroupInfoService?wsdl -----指定wsdl文件的路徑

第二步:用genclient.bat生成四個(gè)客戶端類

雙擊編譯好的bat文件,執(zhí)行后生成的四個(gè)java類如下:

第三步:寫測(cè)試類調(diào)用webservice

  1. package test.webserviceclient; 
  2.  
  3. import java.net.MalformedURLException; 
  4. import java.net.URL; 
  5. import java.rmi.RemoteException; 
  6. import javax.xml.rpc.ParameterMode; 
  7. import javax.xml.rpc.ServiceException; 
  8. import org.apache.axis.client.Call; 
  9. import org.apache.axis.encoding.XMLType; 
  10.  
  11. public class Test { 
  12.     /** 
  13.      * 通過genClient.bat文件生成的webservice客戶端調(diào)用webservice服務(wù)的步驟如下: 
  14.      * 先介紹創(chuàng)建的四個(gè)文件分別為: 
  15.      * IBbossGroupInfoServiceImpl 定義了web服務(wù)接口, 
  16.      * IBbossGroupInfoServiceImplService 定義了用戶獲取web服務(wù)接口的方法 
  17.      * IBbossGroupInfoServiceImplServiceLocator 接口IBbossGroupInfoServiceImplService的具體實(shí)現(xiàn) 
  18.      * GroupInfoServiceSoapBindingStub web服務(wù)客戶端樁,通過該類與服務(wù)器交互,該類實(shí)現(xiàn)了IBbossGroupInfoServiceImpl接口 
  19.      * 1.創(chuàng)建service對(duì)象  
  20.      * 2.創(chuàng)建url對(duì)象  
  21.      * 3.創(chuàng)建client對(duì)象  
  22.      * 4.調(diào)用webservice的方法 
  23. */ 
  24.     public static void test1() { 
  25.         // 1.創(chuàng)建一個(gè)service對(duì)象 
  26.         IBbossGroupInfoServiceImplService service = new IBbossGroupInfoServiceImplServiceLocator(); 
  27.  
  28.         try { 
  29.             // 2.創(chuàng)建一個(gè)URL對(duì)象,傳入wsdl的地址夠過URL的構(gòu)造方法創(chuàng)建 
  30.             String wsdlUrl = "http://10.10.146.82:8080/esop_dev/services/GroupInfoService?wsdl"
  31.             URL url = new URL(wsdlUrl); 
  32.  
  33.             // 3創(chuàng)建一個(gè)client對(duì)象 
  34.             IBbossGroupInfoServiceImpl client = service 
  35.                     .getGroupInfoService(url); 
  36.  
  37.             // 4調(diào)用webservice的方法 
  38.             long groupNo = 2100000014L; 
  39.             String res = client.groupInfo(groupNo); 
  40.  
  41.             System.out.println(res); 
  42.  
  43.         } catch (MalformedURLException e) { 
  44.             e.printStackTrace(); 
  45.         } catch (ServiceException e) { 
  46.             e.printStackTrace(); 
  47.         } catch (RemoteException e) { 
  48.             e.printStackTrace(); 
  49.         } 
  50.  
  51.     } 
  52.  
  53.     public static void main(String[] args) { 
  54.         test1(); 
  55.     } 

對(duì)這種生成客戶端四個(gè)類的情況我要說(shuō)明下,還有通過wsdltojava命令的方式生成客戶端類,但是這個(gè)都是一種通過axis調(diào)用webservice的方式,既然有工具我們?yōu)槭裁床挥媚兀?/p>

所以能使用wsdltojava命令的方式,我就不介紹了。

test result:

代碼的測(cè)試截圖我就不貼了,感興趣的可以試試看。

《!--好久沒有上來(lái)活動(dòng)了,今天寫的是最近用到的一個(gè)東東,本人也是個(gè)菜鳥,剛剛在項(xiàng)目中用到webservice,如果有不對(duì)的,請(qǐng)各位大俠指正。--》

原文鏈接:http://www.cnblogs.com/java-pan/archive/2011/11/25/axis_webservice.html

【編輯推薦】

  1. 使用JDK1.6的JAX-WS編寫WebService
  2. 不需要Web應(yīng)用服務(wù)器Java實(shí)現(xiàn)WebServices
  3. 總結(jié)WebService的一些封裝技巧
  4. 詳細(xì)介紹Jsp中的Cookies
  5. 分享JSP學(xué)習(xí)經(jīng)驗(yàn)總結(jié)
責(zé)任編輯:林師授 來(lái)源: 月月鳥0820的博客
相關(guān)推薦

2009-04-01 16:46:31

問題開發(fā)WebService

2009-08-13 15:16:00

Eclipse建立We

2009-06-18 10:19:00

Spring集成XFiWebService

2010-02-26 09:33:18

WCF創(chuàng)建WebSer

2009-08-07 14:10:13

C# WebserviDelphi

2009-06-18 09:42:52

SpringXFire構(gòu)建Web

2011-09-13 17:03:16

Eclipse And

2009-08-06 16:44:03

C#創(chuàng)建WebServ

2009-06-11 09:39:33

netbeans 生成Webservice

2015-07-09 10:44:48

C#WebService

2010-07-22 15:22:58

BlackBerry開

2011-07-18 14:39:53

iPhone SDK UIKit

2011-07-06 17:48:30

iPhone Xcode 模擬器

2009-11-23 20:29:20

ibmdwWeb

2010-08-04 10:17:17

Android開發(fā)WebView組件

2009-02-11 10:08:53

Cookie屬性JSP

2023-12-30 18:31:24

NGINXVPS服務(wù)器

2011-08-17 15:10:21

iPhone開發(fā)Web視圖

2013-07-17 15:39:39

Github詳解

2011-07-27 10:16:41

iPhone SQLite 數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)