免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

如何使用axis開發(fā)webservice

小編給大家分享一下如何使用axis開發(fā)webservice,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了龍里免費(fèi)建站歡迎大家使用!

preparation:

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

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

2.webservice客戶端生成工具genclient.bat(后面會對這個(gè)工具做一個(gè)簡單的說明)

之前介紹沒有說明本機(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ù)需要再說。

start:

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

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

代碼如下:

接口文件:IBbossGroupInfoService.java

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

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

package com.asiainfo.b2p.soap.impl;  import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.asiainfo.b2p.soap.interfaces.IBbossGroupInfoService;  /**  * @Product esop_dev  * @FileName IBbossGroupInfoServiceImpl.java  * @History TODO 根據(jù)集團(tuán)編號,查詢集團(tuán)基本信息、集團(tuán)用戶信息、集團(tuán)訂購歷史  * @Version 1.0.0  * @Date Nov 22, 2011  * @Author pantaipeng  * @Content 最初版本 */ public class IBbossGroupInfoServiceImpl implements IBbossGroupInfoService {     private static transient Log log = LogFactory             .getLog(IBbossGroupInfoServiceImpl.class);       // 根據(jù)集團(tuán)編號查詢集團(tuán)基本信息     public String groupInfo(long groupNo) throws Exception, RemoteException {         log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>集團(tuán)編號=" + groupNo);         //方法體我省略了,為了測試我僅加入一句打印語句         System.out.println("我是一個(gè)公共的方法,作用是根據(jù)集團(tuán)編號查詢集團(tuán)基本信息");         String xml="<message>public_groupInfo</message>";//為了測試,返回的信息我也是隨便寫的一個(gè)字符串         return xml;     }      // 根據(jù)集團(tuán)編號查詢集團(tuán)訂購歷史     public String groupSubHistoryInfo(long groupNo) throws Exception {          log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>集團(tuán)編號=" + groupNo);         //方法體我省略了,為了測試我僅加入一句打印語句         System.out.println("我是一個(gè)公共的方法,作用是根據(jù)集團(tuán)編號查詢集團(tuán)訂購歷史");         String xml="<message>public_groupSubHistoryInfo</message>";//為了測試,返回的信息我也是隨便寫的一個(gè)字符串         return xml;     } }

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

(2)wsdd文件

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

<service name="GroupInfoService" type=""  provider="java:RPC"> <parameter name="className" value="com.asiainfo.b2p.soap.impl.IBbossGroupInfoServiceImpl" ></parameter> <parameter name="allowedMethods" value="*"/> </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文件

<servlet>   <servlet-name>AxisServlet</servlet-name>   <display-name>Apache-Axis Servlet</display-name>   <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet> <servlet-mapping>   <servlet-name>AxisServlet</servlet-name>   <url-pattern>/services/*</url-pattern> </servlet-mapping>

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

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

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

代碼如下:

package test.webserviceclient;  import java.net.MalformedURLException; import java.net.URL; import java.rmi.RemoteException; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.encoding.XMLType;  public class Test {     /**      * 通過genClient.bat文件生成的webservice客戶端調(diào)用webservice服務(wù)的步驟如下:      * 1.創(chuàng)建service對象       * 2.創(chuàng)建url對象       * 3.創(chuàng)建call對象,      * 4.調(diào)用webservice的方法 */     public static void test1() {         try {             // 1.創(chuàng)建service對象,通過axis自帶的類創(chuàng)建             org.apache.axis.client.Service service = new org.apache.axis.client.Service();              // 2.創(chuàng)建url對象             String wsdlUrl = "http://10.10.146.82:8080/esop_dev/services/GroupInfoService?wsdl";//請求服務(wù)的URL             URL url = new URL(wsdlUrl);//通過URL類的構(gòu)造方法傳入wsdlUrl地址創(chuàng)建URL對象  // 2.創(chuàng)建服務(wù)方法的調(diào)用者對象call,設(shè)置call對象的屬性             Call call = (Call) service.createCall();             call.setTargetEndpointAddress(url);//給call對象設(shè)置請求的URL屬性             String serviceName = "groupInfo";             call.setOperationName(serviceName);//給call對象設(shè)置調(diào)用方法名屬性             call.addParameter("groupNo", XMLType.XSD_LONG, ParameterMode.IN);// 給call對象設(shè)置方法的參數(shù)名、參數(shù)類型、參數(shù)模式             call.setReturnType(XMLType.SOAP_STRING);// 設(shè)置調(diào)用方法的返回值類型  //4.通過invoke方法調(diào)用webservice             long groupNo = 2100000014L;             String res = (String) call.invoke(new Object[] { groupNo });//調(diào)用服務(wù)方法             System.out.println(res);         } catch (MalformedURLException e) {             e.printStackTrace();         } catch (ServiceException e) {             e.printStackTrace();         } catch (RemoteException e) {             e.printStackTrace();         }     }      public static void main(String[] args) {         test1();     } }

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

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

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

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

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類如下:

如何使用axis開發(fā)webservice

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

package test.webserviceclient;  import java.net.MalformedURLException; import java.net.URL; import java.rmi.RemoteException; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.encoding.XMLType;  public class Test {     /**      * 通過genClient.bat文件生成的webservice客戶端調(diào)用webservice服務(wù)的步驟如下:      * 先介紹創(chuàng)建的四個(gè)文件分別為:      * IBbossGroupInfoServiceImpl 定義了web服務(wù)接口,      * IBbossGroupInfoServiceImplService 定義了用戶獲取web服務(wù)接口的方法      * IBbossGroupInfoServiceImplServiceLocator 接口IBbossGroupInfoServiceImplService的具體實(shí)現(xiàn)      * GroupInfoServiceSoapBindingStub web服務(wù)客戶端樁,通過該類與服務(wù)器交互,該類實(shí)現(xiàn)了IBbossGroupInfoServiceImpl接口      * 1.創(chuàng)建service對象       * 2.創(chuàng)建url對象       * 3.創(chuàng)建client對象       * 4.調(diào)用webservice的方法 */     public static void test1() {         // 1.創(chuàng)建一個(gè)service對象         IBbossGroupInfoServiceImplService service = new IBbossGroupInfoServiceImplServiceLocator();          try {             // 2.創(chuàng)建一個(gè)URL對象,傳入wsdl的地址夠過URL的構(gòu)造方法創(chuàng)建             String wsdlUrl = "http://10.10.146.82:8080/esop_dev/services/GroupInfoService?wsdl";             URL url = new URL(wsdlUrl);              // 3創(chuàng)建一個(gè)client對象             IBbossGroupInfoServiceImpl client = service                     .getGroupInfoService(url);              // 4調(diào)用webservice的方法             long groupNo = 2100000014L;             String res = client.groupInfo(groupNo);              System.out.println(res);          } catch (MalformedURLException e) {             e.printStackTrace();         } catch (ServiceException e) {             e.printStackTrace();         } catch (RemoteException e) {             e.printStackTrace();         }      }      public static void main(String[] args) {         test1();     } }

以上是“如何使用axis開發(fā)webservice”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站題目:如何使用axis開發(fā)webservice
網(wǎng)站路徑:http://m.newbst.com/article40/gcsgho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化品牌網(wǎng)站建設(shè)品牌網(wǎng)站制作搜索引擎優(yōu)化軟件開發(fā)云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)