JAX-WS的实例

本文介绍了一个使用Java实现的简单Web服务示例,包括WeatherClient客户端代码、WeatherInterface服务接口定义及其实现WeatherInterfaceImpl,同时展示了如何通过WebService注解发布服务及如何通过Service类调用服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}  
    
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值