
項(xiàng)目結(jié)構(gòu)
1 創(chuàng)建服務(wù)端
- 1.1 創(chuàng)建weather接口
package com.lm.ws;
public interface WeatherInterface {
public String queryWeather(String cityName);
}
- 1.2 創(chuàng)建實(shí)現(xiàn)類(lèi)
@WebService注解表示該類(lèi)是一個(gè)服務(wù)類(lèi),需要發(fā)布其中的public的方法
package com.lm.ws;
import javax.jws.WebService;
@WebService
public class WeatherInterfaceImpl implements WeatherInterface {
public String queryWeather(String cityName) {
System.out.println("服務(wù)端:"+cityName);
String weather = "晴";
return weather;
}
}
- 1.3 發(fā)布服務(wù),
Endpoint.publish(服務(wù)地址,實(shí)現(xiàn)類(lèi));
package com.lm.ws;
import javax.xml.ws.Endpoint;
public class WeatherService {
public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());
System.out.println("web service success");
}
}
- 1.4 閱讀WSDL說(shuō)明書(shū),WSDL說(shuō)明書(shū)地址為
服務(wù)地址?wsdl,示例:http://127.0.0.1:12345/weather?wsdl
2 創(chuàng)建客戶(hù)端
2.1 客戶(hù)端開(kāi)發(fā):創(chuàng)建客戶(hù)端項(xiàng)目(代碼由jdk提供的wsimport生成)
-
2.2 打開(kāi)命令窗口cmd,進(jìn)入所創(chuàng)建項(xiàng)目的
src目錄下,我的項(xiàng)目所在目錄是C:\hdel_scm\workspace_new\weather_wsimport
cmd操作 2.3輸入
wsimport -s . wsdl說(shuō)明書(shū)地址,示例:wsimport -s . http://127.0.0.1:12345/weather?wsdl,這里的.是代表當(dāng)前目錄,表示在src目錄下生成客戶(hù)端代碼-
2.4 使用客戶(hù)端代碼調(diào)用服務(wù)端
- 創(chuàng)建服務(wù)視圖,視圖是從service標(biāo)簽的name屬性獲取
- 獲取服務(wù)實(shí)現(xiàn)類(lèi),實(shí)現(xiàn)類(lèi)從portType的name屬性獲取
- 獲取查詢(xún)方法,從portType的operation標(biāo)簽獲取
package com.lm.client;
import com.lm.ws.WeatherInterfaceImpl;
import com.lm.ws.WeatherInterfaceImplService;
public class WeatherClient {
public static void main(String[] args) {
//創(chuàng)建服務(wù)視圖
WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();
//獲取服務(wù)實(shí)現(xiàn)類(lèi)
WeatherInterfaceImpl weatherInterfaceImpl = weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class);
//調(diào)用查詢(xún)方法
String weather = weatherInterfaceImpl.queryWeather("上海");
System.out.println(weather);
}
}
