web service
1 创建服务端
- 1.1 创建weather接口
package com.lm.ws;
public interface WeatherInterface {
public String queryWeather(String cityName);
}
- 1.2 创建实现类
@WebService
注解表示该类是一个服务类,需要发布其中的public的方法
package com.lm.ws;
import javax.jws.WebService;
@WebService
public class WeatherInterfaceImpl implements WeatherInterface {
public String queryWeather(String cityName) {
System.out.println("服务端:"+cityName);
String weather = "晴";
return weather;
}
}
- 1.3 发布服务,
Endpoint.publish(服务地址,实现类);
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说明书,WSDL说明书地址为
服务地址?wsdl
,示例:http://127.0.0.1:12345/weather?wsdl
2 创建客户端
-
2.1 客户端开发:创建客户端项目(代码由jdk提供的wsimport生成)
-
2.2 打开命令窗口cmd,进入所创建项目的
src
目录下,我的项目所在目录是C:\hdel_scm\workspace_new\weather_wsimport
-
2.3输入
wsimport -s . wsdl说明书地址
,示例:wsimport -s . http://127.0.0.1:12345/weather?wsdl
,这里的.
是代表当前目录,表示在src目录下生成客户端代码 -
2.4 使用客户端代码调用服务端
- 创建服务视图,视图是从service标签的name属性获取
- 获取服务实现类,实现类从portType的name属性获取
- 获取查询方法,从portType的operation标签获取
package com.lm.client;
import com.lm.ws.WeatherInterfaceImpl;
import com.lm.ws.WeatherInterfaceImplService;
public class WeatherClient {
public static void main(String[] args) {
//创建服务视图
WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();
//获取服务实现类
WeatherInterfaceImpl weatherInterfaceImpl = weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class);
//调用查询方法
String weather = weatherInterfaceImpl.queryWeather("上海");
System.out.println(weather);
}
}