APACHE-CXF demo

首先需要 去官网( http://cxf.apache.org/download.html )下载Apache CXF
其实里面已经有非常多的demo了,可以自己看着学习。里面demo都写的很好。
这里我主要说下自己在网络上找的一个调用 .NET 服务端 WebService 的一个demo走的一些弯路及个人见解。
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl这是一个天气预报的链接。使用apache-cxf 里的wadl2java.bat可以建wsdl转换成java类。命令如下:wsdl2java -p cn.com.webxml -d f:/ http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
-p 表示生成的JAVA客户端调用代码的包路径;-d 表示生成在本地哪个目录下(本例为F盘根目录); 最后一个参数为WSDL文件路径(也可以是本地文件),关于命令参数的具体内容可以参考:https://cwiki.apache.org/CXF20DOC/wsdl-to-java.html

如果按以上命令会出现错误,可以将wsdl另存为本地文件,将报错的地方注释掉,再次转换就可以了。然后将生成出来的java类复制到项目里。接下来就可以在项目里直接写测试类调用了。代码如下:

package test.weather;
import javax.xml.ws.Service;

//import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebService;
import cn.com.webxml.WeatherWebServiceSoap;

public class WeatherTest {
	
	public static void main(String[] args) throws Exception {
		
		java.net.URL wsdlLocation = ClassLoader.getSystemResource("weather.wsdl");
		
		Service service = new WeatherWebService(wsdlLocation);
		WeatherWebServiceSoap soap = service.getPort(WeatherWebServiceSoap.class);
		
		ArrayOfString supportProvince = soap.getSupportProvince();
		System.out.println(supportProvince.getString());
		
		ArrayOfString supportCity = soap.getSupportCity("浙江");
		System.out.println(supportCity.getString());
		
		ArrayOfString weatherbyCityName = soap.getWeatherbyCityName("厦门");
		System.out.println(weatherbyCityName.getString());
		
	}
	
}
以下代码无需引用其他jar包。但需要用到jdk自带的tools.jar,如果使用的jre就需要将jdk下lib下的tools.jar复制到jre下。不然会报错。
import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebService;
import cn.com.webxml.WeatherWebServiceSoap;
里面用到的这几个类都是 Apache CXF根据wsdl生成出来的

如果使用以下代码调用接口需要引入相应Apache CXF的jar包。这样就不需要利用wsdl2java生成java类了。

org.apache.cxf.endpoint.Client client = JaxWsDynamicClientFactory.newInstance().createClient("对应wsdl的地址");
Object[] objects = client.invoke("接口名称","参数");

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.1.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.1.8</version>
        </dependency>


具体更详细的调用Apache CXF webservice可以参考官方demo。里面有介绍如何使用与spring搭配使用建立web service服务。例子挺详细的有xml配置的和javaConfig的。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值