一,目标:通过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
在将
改为
再次用
wsimport -s . 文件地址