webservice+cxf接口开发

1、到官网下载cxf的包,放到新建项目中;

2、修改wsdl文件(本例问题)

打开http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl,另存为WeatherWebService.wsdl文件。在文件中的所有<s:element ref="s:schema"/><s:any/>的这部分内容改为 <s:any minOccurs="2" maxOccurs="2"/>,因为如果不更改会运行的时候会报不认识 s:schema元素,使用axis方式的话不会出现这个情况。

3、通过wsdl2java工具来生成客户端代码

wsdl2java -client -d D:/temp -p WSDL2Java -frontend jaxws21 WeatherWebService.wsdl

  • -d是指定生成文件目录;
  • -p是指定生成文件包名;
  • -frontend是指定前端类型及版本。


其中, WeatherWebService.wsdl文件要放在wsdl2java工具的同目录下, WeatherWebService.wsdl可以是url链接。
在cmd中输入以上命令后生成如下文件:

在WeatherWebService.java类中,修改31行开始的代码,代码如下:
 static {
//        URL url = WeatherWebService.class.getResource("WeatherWebService.wsdl");
//        System.out.println(url);
//        if (url == null) {
//            url = WeatherWebService.class.getClassLoader().getResource("WeatherWebService.wsdl");
//        } 
//        if (url == null) {
//            java.util.logging.Logger.getLogger(WeatherWebService.class.getName())
//                .log(java.util.logging.Level.INFO, 
//                     "Can not initialize the default wsdl from {0}", "WeatherWebService.wsdl");
//        }       
    	URL url = null;
		try {
			url = new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl");
		} catch (MalformedURLException e) {
			 java.util.logging.Logger.getLogger(WeatherWebService.class.getName())
		        .log(java.util.logging.Level.INFO, 
		             "Can not initialize the default wsdl from {0}", "WeatherWebService.wsdl");
		}
       
        WSDL_LOCATION = url;


4、客户端测试
新建一个测试类,代码如下:
 WeatherWebServiceSoap client2 = new WeatherWebService().getWeatherWebServiceSoap();  
        ArrayOfString result = client2.getWeatherbyCityName("青岛");  
      
        List<String> list = result.getString();  
        for(int index = 0; index < list.size(); index ++) {  
            System.out.println(index + "," + list.get(index));  
        }  
就可以打印出青岛的天气情况了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值