WebService之jax-ws入门

来源:互联网 发布:quickconnect 域名 编辑:程序博客网 时间:2024/04/28 15:24

这是一个入门程序,只求通俗易懂,不求深入。

1、创建一个JAVA项目,并创建一个WeatherService的接口

package com.ckinghan.webService.jaxws;public interface WeatherService {    /**     * 根据城市获取天气信息     * @param city     * @return     */    public String getWeatherInfo(String city);}

2、创建WeatherService接口的实现类

package com.ckinghan.webService.jaxws.impl;import javax.jws.WebService;import com.ckinghan.webService.jaxws.WeatherService;/** * 注意,这里的@WebService必须加,是要告诉系统这是个WebService的程序 */@WebServicepublic class WeatherServiceImpl implements WeatherService{    /**     * 实现接口中的方法     */    @Override    public String getWeatherInfo(String city) {        System.out.println("接收到来自客户端的请求数据:"+city);        return "这是个晴天";    }}

3、创建CreateServiceTest测试类,将WebService程序进行发布,并执行。

package com.ckinghan.webService.jaxws.test;import javax.xml.ws.Endpoint;import com.ckinghan.webService.jaxws.impl.WeatherServiceImpl;public class CreateServiceTest {    /**     * 测试发布     */    public static void main(String[] args) {        //使用Endpoint进行发布,参数一:访问地址。参数二:发布的服务        Endpoint.publish("http://localhost:12306/weather", new WeatherServiceImpl());    }}

4、执行后,可以将发布的地址复制一下粘贴到浏览器上,看是否发布成功,如果发布成功,会出现如下界面:

这里写图片描述

5、点击右下角的连接,(http://localhost:12306/weather?wsdl),将会出现如下界面:

这里写图片描述

6、将Client客户端代码进行导出。操作方式

  • 在C盘创建一个文件夹:webService
  • 打开CMD窗口,输入: cd c:/ 进入C盘根目录
  • 输入cd webService 进入webService文件夹
  • 输入 wsimport -s . http://localhost:12306/weather?wsdl
  • 回车,生成代码。(参数说明: -s :生成代码 . :在当前目录 http://localhost:12306/weather?wsdl 生成代码的参考来源)。
  • 常见出错问题:连接地址写错,少加了?wsdl参数
  • 环境变量配置不正确,如果可以使用javac -version命令正确输出,就可以正常导出数据。

这里写图片描述

7、将生成 的代码包括文件夹复制到 新创建的一个JAVA项目(webServieClient)中的src目录下。复制过后如下:

这里写图片描述

8、创建测试类ClientTest,并执行,查看效果:

package com.ckinghan.webservice.jaxws.impl;public class ClientTest {    /**     * 测试WebService是否可以正常访问     */    public static void main(String[] args) {        //创建WebServer服务发布的对象        WeatherServiceImplService weatherServiceImplService = new WeatherServiceImplService();        //通过WebServer的对象获取Port,参数是wsdl文件中指定的类        WeatherServiceImpl port = weatherServiceImplService.getPort(WeatherServiceImpl.class);        //远程调用WebService服务器的接口,获取数据        String weatherInfo = port.getWeatherInfo("河南");        //打印获取 的数据        System.out.println("服务端回复:"+weatherInfo);    }}

9、执行后效果如下:

这里写图片描述

这里写图片描述

10、测试完成。。。