WebService 概述
Web service是一個平臺獨立的,低耦合的波岛,自包含的材彪、基于可編程的web的應(yīng)用程序冠息,可使用開放的XML(標準通用標記語言下的一個子集)標準來描述碱蒙、發(fā)布荠瘪、發(fā)現(xiàn)、協(xié)調(diào)和配置這些應(yīng)用程序赛惩,用于開發(fā)分布式的互操作的應(yīng)用程序哀墓。
Web Service技術(shù), 能使得運行在不同機器上的不同應(yīng)用無須借助附加的喷兼、專門的第三方軟件或硬件篮绰, 就可相互交換數(shù)據(jù)或集成。依據(jù)Web Service規(guī)范實施的應(yīng)用之間褒搔, 無論它們所使用的語言阶牍、 平臺或內(nèi)部協(xié)議是什么, 都可以相互交換數(shù)據(jù)星瘾。Web Service是自描述、 自包含的可用網(wǎng)絡(luò)模塊惧辈, 可以執(zhí)行具體的業(yè)務(wù)功能琳状。Web Service也很容易部署, 因為它們基于一些常規(guī)的產(chǎn)業(yè)標準以及已有的一些技術(shù)盒齿,諸如標準通用標記語言下的子集XML念逞、HTTP。Web Service減少了應(yīng)用接口的花費边翁。Web Service為整個企業(yè)甚至多個組織之間的業(yè)務(wù)流程的集成提供了一個通用機制翎承。
更多內(nèi)容請查看:http://baike.so.com/doc/5411995-5650117.html
創(chuàng)建服務(wù)端代碼
1:新建一個web工程如下圖所示:
2:編寫服務(wù)端的接口和它的實現(xiàn)類如下圖所示:
3:在web.xml 中添加對應(yīng)的servlet
<servlet-name>AxisServlet</servlet-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>```
4:在WEB-INF 下面新建server-config.wsdd 文件內(nèi)容如下:
<?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">
<handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
</requestFlow>
</transport>
<service name="myFirstWebservice" provider="java:RPC">
<parameter name="className" value="com.test.server.WBServiceImpl" />
<parameter name="allowedMethods" value="*" />
</service>
</deployment>
5:部署工程到Tomcat中查看是否已對應(yīng)的WSDL生成,本例子的URL為:http://localhost:8080/wsServer/services/myFirstWebservice?wsdl符匾。
如果出現(xiàn)如圖所示則表示您已經(jīng)成功的部署好服務(wù)端的WebService了叨咖。
![生成的WSDl](http://upload-images.jianshu.io/upload_images/303808-11e7f5f8fc2ed9bd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#創(chuàng)建客戶端調(diào)用WebService接口
package com.test.client;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.encoding.XMLType;
import org.apache.axis.client.Call;
import org.apache.axis2.util.URL;
public class Test {
public static void main(String[] args) {
test1();
}
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://localhost:8080/wsServer/services/myFirstWebservice?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(wsdlUrl);//給call對象設(shè)置請求的URL屬性
String serviceName = "getServerDesc";
call.setOperationName(serviceName);//給call對象設(shè)置調(diào)用方法名屬性
call.addParameter("getServerDesc", XMLType.SOAP_ARRAY, ParameterMode.IN);// 給call對象設(shè)置方法的參數(shù)名甸各、參數(shù)類型、參數(shù)模式
call.setReturnType(XMLType.SOAP_STRING);// 設(shè)置調(diào)用方法的返回值類型
//4.通過invoke方法調(diào)用webservice
String userName = "平行線";
String res = (String) call.invoke(new Object[] { userName });//調(diào)用服務(wù)方法
System.out.println(res);
} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
控制臺輸出了“您好:平行線您已經(jīng)成功調(diào)用到我們的服務(wù)焰坪!”表示客戶端也成功的調(diào)用了WebService接口了
![調(diào)用接口的結(jié)果](http://upload-images.jianshu.io/upload_images/303808-088ee22685a759f7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
注:Demo下載地址:https://yunpan.cn/cYhqqE6ji8yvJ 訪問密碼 8d8e
希望給看到這篇文章的小伙伴有所幫助趣倾,如果有什么地方講的不對也希望大俠們多多指點。