一言以蔽之:WebService是一種跨編程語言和跨操作系統(tǒng)平臺的遠程調(diào)用技術(shù)。
所謂跨編程語言和跨操作平臺,就是說服務(wù)端程序采用java編寫,客戶端程序則可以采用其他編程語言編寫,反之亦然!跨操作系統(tǒng)平臺則是指服務(wù)端程序和客戶端程序可以在不同的操作系統(tǒng)上運行。
所謂遠程調(diào)用,就是一臺計算機a上 的一個程序可以調(diào)用到另外一臺計算機b上的一個對象的方法
發(fā)布方式:4種
CXF方式
Xfire方式
AXIS2方式
AXIS1方式
服務(wù)端 cxf方式
所需jar包
接口
接口必須要用@WebService注解
@WebService
public interface HelloWorld {
String sayHi(String name);
}
實現(xiàn)類
@WebService(endpointInterface="com.ywx.HelloWorld",serviceName="HelloWorldWs")//指定webservice所實現(xiàn)的接口以及服務(wù)名稱
public class HellowWorlds implements HelloWorld{
@Override
public String sayHi(String name) {
return name+"您好!現(xiàn)在時間是:"+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暴露成功!");
}
}
注:對于本機地址 http://192.168.106.181:9080/vashon?wsdl 和 http://localhost:9080/vashon?wsdl 不一樣,后者在別的電腦上不能訪問
接口/實現(xiàn)類/發(fā)布也可以寫在一個類中 如下所示
@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項目或動態(tài)項目后按步驟自動生成)
右鍵->new->other->Web Service Client
客戶端生成后 需要新建一個測試的類:如
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();
}
}
}
完整實例
?
webservice加入到tomcat監(jiān)聽,實現(xiàn)服務(wù)調(diào)用
?
?
本文摘自 :https://www.cnblogs.com/