webservice java项目记录笔记

一,目标:通过JDK来发布webservice服务

1,创建接口
2,创建实现类+@webservice
3,发布服务

 

 

 IWeatherService.java

public interface IWeatherService {

    public String Query(String cityName);
    
    public String queryother(String cityname);
}

WeatherServiceImpl.java

import javax.jws.WebService;

@WebService
public class WeatherServiceImpl implements IWeatherService {

    @Override
    public String Query(String cityName) {
        System.out.println("查询!"+cityName);
        return "121212";
    }

    @Override
    public String queryother(String cityname) {
        // TODO Auto-generated method stub
        return "1212"+cityname;
    }

}

发布:

public class Main {

    public static void main(String[] args) {
        Endpoint.publish("http://localhost:8080/weatherservice", new WeatherServiceImpl());
        System.out.println("发布成功!");

    }

}

浏览器输入:

http://localhost:8080/weatherservice?wsdl

服务说明书

接口名:WeatherServiceImplService

 

 

 portType  下面的  类名:WeatherServiceImpl

两个方法:Query和queryother

二,目标:通过编程来访问服务

1,生成客户端代码
命令:wsimport
通过cmd进入当前项目的src路径下,
输入命令,
wsimport -s . http://localhost:8080/weatherservice?wsdl

 

进入命令行cmd

进入到当前client端项目的src下面

输入:wsimport -s . http://localhost:8080/weatherservice?wsdl

 

 

 回到eclipse,创建的client 刷新一下项目

 

 

 调用webservice

main.java

import com.huk.webservice.WeatherServiceImpl;
import com.huk.webservice.WeatherServiceImplService;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //1,创建服务视图
        WeatherServiceImplService webservice = new WeatherServiceImplService();
        //2,获取服务实现类
        WeatherServiceImpl port = webservice.getPort(WeatherServiceImpl.class);
        //3,调用实现方法
        String query = port.query("江西");
        System.out.println(query);
        
        String queryother = port.queryother("南昌!");
        System.out.println(queryother);
    }

}

三,目标:webservice 服务更新了,怎么办
需要从新生成client代码
先将之前的删除,在用cmd重新生成
利用命令 wsimport -s . http://localhost:8080/weatherservice?wsdl


四,目标:解析网络的wsdl报错

无法将's:schema' 解析为'element declaration'组件
根据网络公共的webservice来生成客户端代码

怎么办?
将wsdl文档保存到本地 保存后缀名为.wsdl
在将
<s:element ref="s:schema" /><s:any />
改为
<s:any minOccurs="2" maxOccurs="2" />

再次用
wsimport -s . 文件地址

posted @ 2020-01-01 12:21  致力于工作  阅读(211)  评论(0)    收藏  举报