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
    cmd操作

  • 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);
	}
}
posted @ 2018-04-24 14:38  MZ233  阅读(145)  评论(0编辑  收藏  举报