一言以蔽之:WebService是一種跨編程語(yǔ)言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù)。
所謂跨編程語(yǔ)言和跨操作平臺(tái),就是說(shuō)服務(wù)端程序采用java編寫,客戶端程序則可以采用其他編程語(yǔ)言編寫,反之亦然!跨操作系統(tǒng)平臺(tái)則是指服務(wù)端程序和客戶端程序可以在不同的操作系統(tǒng)上運(yùn)行。
所謂遠(yuǎn)程調(diào)用,就是一臺(tái)計(jì)算機(jī)a上 的一個(gè)程序可以調(diào)用到另外一臺(tái)計(jì)算機(jī)b上的一個(gè)對(duì)象的方法
發(fā)布方式:4種
CXF方式
Xfire方式
AXIS2方式
AXIS1方式
服務(wù)端 cxf方式
所需jar包
接口
接口必須要用@WebService注解
@WebService
public interface HelloWorld {
String sayHi(String name);
}
實(shí)現(xiàn)類
@WebService(endpointInterface="com.ywx.HelloWorld",serviceName="HelloWorldWs")//指定webservice所實(shí)現(xiàn)的接口以及服務(wù)名稱
public class HellowWorlds implements HelloWorld{
@Override
public String sayHi(String name) {
return name+"您好!現(xiàn)在時(shí)間是:"+new Date();
}
?
}
發(fā)布(暴露接口)
public class ServiceMain {
public static void main(String args[]){
HelloWorld hw = new HellowWorlds();
//調(diào)用Endpoint的publish方法發(fā)布Web Service
Endpoint.publish("http://192.168.106.181:9080/vashon", hw);
System.out.println("Web Service暴露成功!");
}
}
注:對(duì)于本機(jī)地址 http://192.168.106.181:9080/vashon?wsdl 和 http://localhost:9080/vashon?wsdl 不一樣,后者在別的電腦上不能訪問(wèn)
接口/實(shí)現(xiàn)類/發(fā)布也可以寫在一個(gè)類中 如下所示
@WebService
public class Function {
public String transWords(String words){
String res = "";
for(char ch : words.toCharArray()){
res += ch+",";
}
return res;
}
public static void main(String[] args) {
// 使用Endpoint(終端)類發(fā)布webservice
System.out.println("Publish Success");
}
}
?
客戶端(新建java項(xiàng)目或動(dòng)態(tài)項(xiàng)目后按步驟自動(dòng)生成)
右鍵->new->other->Web Service Client
客戶端生成后 需要新建一個(gè)測(cè)試的類:如
public class TestService {
public static void main(String[] args) {
// TODO Auto-generated method stub
HelloWorldProxy h = new HelloWorldProxy();
try {
String s = h.sayHi("鄭亮");
System.out.println("調(diào)webservice:"+s);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
完整實(shí)例
?
webservice加入到tomcat監(jiān)聽,實(shí)現(xiàn)服務(wù)調(diào)用
?
?
本文摘自 :https://www.cnblogs.com/