1建个java project
2代码:
WeatherClient.java
package com;
import java.net.URL;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.util.Date;
public class WeatherClient {
public static void main(String[] args) throws Exception {
//创建服务视图
Service service = Service.create(new URL("http://localhost:8080/hello_world"),
new QName("http://weather.itheima.com/", "WeatherService"));
//从服务视图获得protType对象
WeatherInterface weatherInterfaceImpl = service.getPort(WeatherInterface.class);
//调用服务端方法
List<WeatherModel> list = weatherInterfaceImpl.queryWeather("北京");
//显示天气信息
for (WeatherModel weatherModel : list) {
System.out.println(weatherModel.getDate().getTime());
System.out.println(weatherModel.getInfo());
System.out.println(weatherModel.getMaxTemp());
System.out.println(weatherModel.getMinTemp());
}
}
}
WeatherInterface.java
package com;
import java.util.List;
import javax.jws.WebService;
@WebService
public interface WeatherInterface {
List<WeatherModel> queryWeather(String cityName);
}
WeatherInterfaceImpl.java
package com;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService(
endpointInterface="com.WeatherInterface", //可以指定SEI接口
name="WeatherInterface", //不使用SEI接口时规范portType的名称
serviceName="WeatherService", //服务视图的名称
portName="WeatherPort", //Service节点中port节点的name属性
targetNamespace="http://zzz/" //wsdl的命名空间
)
public class WeatherInterfaceImpl implements WeatherInterface {
@Override
@WebMethod/*(exclude=true)*/
@WebResult(name="WeatherInfo")
public List<WeatherModel> queryWeather(@WebParam(name="cityName")String cityName) {
System.out.println("客户端发送的城市:" + cityName);
//查询天气信息
List<WeatherModel> info = getWeatherInfo(cityName);
//返回天气信息
return info;
}
public static void main(String[] args) throws InterruptedException{
System.out.println("Starting Server");
WeatherInterfaceImpl implementor = new WeatherInterfaceImpl();
// String address = "http://localhost:9000/helloWorld";
String address = "http://localhost:8080/hello_world";
Endpoint.publish(address, implementor);
Thread.sleep(10*10*1000);
}
private List<WeatherModel> getWeatherInfo(String cityName) {
List<WeatherModel> weatherList = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
//第一天
WeatherModel model1 = new WeatherModel();
model1.setInfo("雷阵雨");
model1.setMaxTemp(31);
model1.setMinTemp(22);
model1.setDate(calendar.getTime());
weatherList.add(model1);
//第二天
WeatherModel model2 = new WeatherModel();
model2.setInfo("多云");
model2.setMaxTemp(33);
model2.setMinTemp(25);
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
model2.setDate(calendar.getTime());
weatherList.add(model2);
//第三天
WeatherModel model3 = new WeatherModel();
model3.setInfo("多云");
model3.setMaxTemp(35);
model3.setMinTemp(25);
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
model3.setDate(calendar.getTime());
weatherList.add(model3);
return weatherList;
}
}
WeatherModel.java
package com;
import java.util.Date;
public class WeatherModel {
private String info;
private int maxTemp;
private int minTemp;
private Date date;
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public int getMaxTemp() {
return maxTemp;
}
public void setMaxTemp(int maxTemp) {
this.maxTemp = maxTemp;
}
public int getMinTemp() {
return minTemp;
}
public void setMinTemp(int minTemp) {
this.minTemp = minTemp;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}