小編給大家分享一下如何使用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類如下:
第三步:寫測試類調(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)