java中的webService

JDK1.6后JAX-WS规范定义了如何发布一个WebService服务: 

相关类位于都位于Javax.jws.*包中

  • @WebService——此注解用在类上指定将此类发布成一个WebService;
  • EndPoint——此类为端点服务类,其中publish()方法用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上,用于发布

接口

public interface WeatherService {
    //查询天气的方法
    public String queryWeather(String cityName);
}

实现类

import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService
public class WeatherServiceImpl implements WeatherService {
    //查询天气  
    public String queryWeather(String cityName) {
        System.out.println(cityName + "天气是:晴天");
        return "晴";
    }
    public static void main(String[] args) {
/**
 *参数1:服务的发布地址
 *参数2:服务的实现者
 */
        Endpoint.publish("http://127.0.0.1:9999/weatherService",new WeatherServiceImpl());
    }
}

查看wsdl:http://127.0.0.1:9999/weatherService?wsdl

ps:类上添加注解@WebService,类中所有非静态方法都会被发布; 静态方法和final方法不能被发布;方法上加@WebMentod(exclude=true)后,此方法不被发布

wsimport是JDK自带的,可以根据WSDL文档生成客户端调用代码的工具

wsimport.exe命令参数熟知: 
-d:生成class文件。默认参数。 
-s:生成Java文件 -p:自定义包结构

解析地址生成源码到D盘:D:\>wsimport -s . http://127.0.0.1:9999/weatherService?wsdl

客户端

public class WebServiceClient {
    public static void main(String[] args) {
        WeatherServiceImplService ws = new WeatherServiceImplService();
        WeatherServiceImpl wsImpl = ws.getWeatherServiceImplPort();
        String result = wsImpl.queryWeather("hangzhou");
        System.out.println(result);
    }
}
发布了296 篇原创文章 · 获赞 70 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/feicongcong/article/details/86513090