10_Jaxws使用自定义pojo发布服务

Posted HigginCui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10_Jaxws使用自定义pojo发布服务相关的知识,希望对你有一定的参考价值。

【简述】

查询三天的天气信息(天气概况、日期、温度),测试jaxws是否支持自定义pojo发布服务。

 

【开发过程】

服务端:

1.自定义pojo(天气概况、日期、温度)

2.开发SEI接口及实现类

3.发布服务

客户端:(采用service类标准方法调用webService)

1.根据wsdl说明书生成客户端调用代码。

2.将生成代码拷贝到工程中,编写客户端类。

 

【服务端工程截图】

 

【WeatherModel.java】

package com.Higgin.ws.pojo;
import java.util.Date;

public class WeatherModel {
    
    //天气概况
    private String detail;
    
    //日期
    private Date date;
    
    //最高温度
    private  int  temperature_max;
    
    //最低温度
    private int temperature_min;
    //忽略get/set方法...........
}

【WeatherInterface.java】

package com.Higgin.ws.service;

import java.util.List;
import com.Higgin.ws.pojo.WeatherModel;

public interface WeatherInterface {
    public List<WeatherModel> queryWeatheer(String cityName);
}

【WeatherInterfaceImpl.java】

package com.Higgin.ws.service;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.jws.WebService;

import com.Higgin.ws.pojo.WeatherModel;

@WebService
public class WeatherInterfaceImpl implements WeatherInterface{

    @Override
    public List<WeatherModel> queryWeatheer(String cityName) {
        
        //构造三天天气
        List<WeatherModel> list =new ArrayList<WeatherModel>();
        Calendar calendar=Calendar.getInstance();
        int day=calendar.get(Calendar.DATE);        
        
        WeatherModel weatherModel_1=new WeatherModel();
        weatherModel_1.setDetail("晴天");
        weatherModel_1.setDate(new Date());
        weatherModel_1.setTemperature_max(10);
        weatherModel_1.setTemperature_min(-10);
        
        WeatherModel weatherModel_2=new WeatherModel();
        weatherModel_2.setDetail("阴天");
        calendar.set(Calendar.DATE, day+1);
        weatherModel_2.setDate(calendar.getTime());
        weatherModel_2.setTemperature_max(6);
        weatherModel_2.setTemperature_min(-2);
        
        WeatherModel weatherModel_3=new WeatherModel();
        weatherModel_3.setDetail("晴天");
        calendar.set(Calendar.DATE, day+2);
        weatherModel_3.setDate(calendar.getTime());
        weatherModel_3.setTemperature_max(30);
        weatherModel_3.setTemperature_min(3);
        
        
        list.add(weatherModel_1);
        list.add(weatherModel_2);
        list.add(weatherModel_3);
        return list;
    }

}

【WeatherServer.java】

package com.Higgin.ws.service;

import javax.xml.ws.Endpoint;

public class WeatherServer {
    public static void main(String[] args) {
        Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());
    }
}

 

【客户端工程截图】

已经使用Wsimport生成了相应的客户端代码

【WeatherClient.java】

package com.higgin.ws.client;

import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import com.higgin.ws.service.WeatherInterfaceImpl;
import com.higgin.ws.service.WeatherModel;

public class WeatherClient {
    
    public static void main(String[] args) throws MalformedURLException {
        //使用说明书          
        URL wsdlDocumentLocation =new URL("http://127.0.0.1:12345/weather?wsdl");
        
        QName serviceName=new QName("http://service.ws.Higgin.com/", "WeatherInterfaceImplService");
        
        //创建服务视图
        Service service=Service.create(wsdlDocumentLocation,serviceName);
        
        //创建portType对象
        WeatherInterfaceImpl weatherInterfaceImpl=service.getPort(WeatherInterfaceImpl.class);
        
        //调用WeatherInterfaceImpl方法
        List<WeatherModel> list=weatherInterfaceImpl.queryWeatheer("杭州");
        
                
        
        for(WeatherModel weatherModel:list){
            System.out.println(weatherModel.getDetail());
            Date date=weatherModel.getDate().toGregorianCalendar().getTime();
            System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));
            System.out.println(weatherModel.getTemperatureMax());
            System.out.println(weatherModel.getTemperatureMin());
        }
        
        
    }
        
}

【运行结果】

 

以上是关于10_Jaxws使用自定义pojo发布服务的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段10—— 数组的响应式方法

jOOQ 自定义 Pojo 和 DAO 生成

soap:address和jaxws:enpoint address之间的区别

java8(openjdk 1.8.0_101)和wildfly 10.1环境中jaxws-maven-plugin生成的soap客户端缺少SNI

具有运行时 pojos 的带有 Hibernate 的 OSGi 片段包

如何在 Toad for Oracle 中使用自定义代码片段?