elasticsearch入門系列">elasticsearch入門系列
664
2025-04-01
webservice主要是解決兩個系統或者兩個應用程序之間的遠程調用,它提供了一種通過web方式訪問的api,調用是跨語言、跨平臺的。
webservice的客戶端與服務端進行交互的時候使用xml來傳遞數據。
soap協議,即簡單對象訪問協議,它是webservice的客戶端與服務端進行交互的時候遵守的一個協議。
在服務端調用webservice服務時,我們可以通過Java jdk自帶的一個命令wsimport,根據服務說明書生成本地Java代碼,我們直接操作這些Java代碼就可以調用webservice.
wsimport -d . wsdl地址 生成本地class文件
wsimport -s . wsdl地址 生成本地java文件,
wsimport -s . -p 包名 wsdl地址 生成本地java文件,并且指定包名
然后直接操作這些Java文件來調用服務端程序。
來看一段代碼:
在服務端發布一個類:
發布程序,運行main方法,即表示發布:
public class PublishService { public static void main(String[] args) { //java提供了一個專門的類,用來用來將一個Java應用程序發布成webservice /** * 兩個參數,分別是 * 1.服務類對外的訪問地址 * 2.服務類的一個實例 */ Endpoint.publish("http://127.0.0.1:8888/helloService", new HelloService()); } }
1
2
3
4
5
6
7
8
9
10
11
12
所發布的類:
//被發布的類上面必須有@WebService注解 @WebService public class HelloService { /** * 被發布的類中必須包含一個非靜態的,非final的public方法 */ public void helloWebService(){ System.out.println("hello webservice!"); } public User getUser(){ return new User("張三","zhangsan"); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
User.java
public class User { private String username; private String nickname; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public User(String username, String nickname) { this.username = username; this.nickname = nickname; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
通過wsimport獲得服務器端的類:
成功獲得服務器端的類,在F盤可以看到這些類,然后新建一個客戶端project,把這些類拷貝進去,在客戶端直接操作這些類就可以訪問服務端程序:
客戶端程序:
public class MyTest { public static void main(String[] args) { HelloService helloService = new HelloServiceService() .getHelloServicePort(); User user = helloService.getUser(); System.out.println(user.getNickname()+","+user.getUsername()); } }
1
2
3
4
5
6
7
8
9
客戶端輸出:
成功拿到服務端數據。
如果調用helloWebService()方法
public class MyTest { public static void main(String[] args) { HelloService helloService = new HelloServiceService() .getHelloServicePort(); helloService.helloWebService(); } }
1
2
3
4
5
6
7
8
則服務端輸出:
成功調用服務端。
如果要傳遞視頻,音頻圖片等消息,可以通過InputStream和OutputStream來實現。
這是通過wsimport的方式來調用服務端程序,下一篇我們看另外一種調用方式。
Java
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。