?周末閑來無事,在家中復習了一下JDK6下開發WebService的知識,為了加強印象,特此記錄。
一、
?????? 樣例
開發環境
從
Java6
開始,
JDK
中已經支持用
Java
開發
WebService
應用了,不必選用第三方包。
|
軟件及其版本
|
|
JDK1.6.0_25
|
|
Eclipse3.4.2 JavaEE
版
|
?
二、
?????? 樣例工程結構
(1)服務端com.ws.server
(手工編寫)
(2)
客戶端
com.ws.client
(自動生成)
(3)
客戶端調用
com.ws.client.test
(手工編寫)。
?三
、
???????樣例開發過程
1、新建Dynamic Web Project
2、編寫服務代碼
package com.ws.server;
import javax.jws.WebService;
@WebService
public class HelloService {
public String sayHello(String username) {
return "hello," + username + "! This is HelloService!";
}
}
3、發布服務,在本例中使用Servlet發布服務
package com.ws.server;
import java.io.IOException;
import java.io.Writer;
import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.xml.ws.Endpoint;
public class HelloServicePublisher extends GenericServlet {
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out
.println("準備啟動WebService-->http://192.168.1.103:8088/WS_Java6/HelloService");
// 發布一個WebService
Endpoint.publish("http://192.168.1.103:8088/WS_Java6/HelloService",
new HelloService());
System.out
.println("成功啟動WebService-->http://192.168.1.103:8088/WS_Java6/HelloService");
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("GBK");
Writer wr = response.getWriter();
wr
.write("<a );
wr.close();
}
}
4、生成客戶端
Java6
提供了生成
WebService
客戶端代碼的工具wsimport.exe,只需在命令行輸入一句簡單的命令就可以生成客戶端代碼。需要
注意的是,在生成客戶端前前需要先啟動服務端。如果已經在啟動,就不需要重新啟動。
-p參數指定生成的代碼所要放置的包
在生成的客戶端中有一個java文件的名字是由服務端的類名加上一個Service組成的,這個xxxService我們可以把它看做是
WebService
的一個代理類,在客戶端我們通過這個代理類來調用服務。
5、編寫客戶端調用服務的代碼
package com.ws.client.test;
import com.ws.client.HelloService;
import com.ws.client.HelloServiceService;
public class ClientTest {
public static void main(String[] args) {
// 創建一個客戶端服務對象
HelloService helloService = new HelloServiceService()
.getHelloServicePort();
// 調用服務方法,并得到方法返回值
String returnContent = helloService.sayHello("張三");
// 打印服務的返回值
System.out.println(returnContent);
}
}
6、運行測試代碼
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

