您的位置:首页 > 其它

CXF学习笔记

2013-10-10 14:32 429 查看
  初学CXF,之前遇到了不少的问题,以下列举CXF的小例子以及我遇到的一些问题。

  首先,CXF要使用的架包有很多版本,不同的版本要使用的配合包也有所不同,我用的是cxf 2.5.2、wsdl4j 1.6.2、meethi 3.0.1。

  使用CXF调用WebService有几种方式,最方便的一种是:

public static Object callService(String wsUrl, String method, String msgContent, String phoneNumber,
String phoneType) {
if (wsUrl == null || method == null) {
logger.error("WebService URL is null or WebService Method is null");
return null;
}
Object[] res = null;
try {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(wsUrl);
setCxfTimeOut(client);
res = client.invoke(method, createXml(msgContent, phoneNumber, phoneType));
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
}
return (Object) res[0];
}


  还有几种方式,这里不做过多的介绍。

  使用CXF发布WebService也非常的方便,  在使用CXF发布WebService之前可以去apache官网下载官方的例子,官方的例子还是很容易上初学者上手的。

  那如何发布WebService呢? 将WSDL文件定义好,使用CXF中的WSDL2JAVA,ubuntu使用命令:wsdl2java -impl -server  mywsdl.wsdl。即可以生成对应的WebService服务端JAVA文件。使用wsdl2java -impl -client  mywsdl.wsdl。即可以生成WebService客户端文件。使用这些生成文件,进行自己逻辑上的小修改,就可以发布自己的WebService了。

  下面介绍下,CXF动态调用WebService设置连接超时:

/**
* 设置CXF请求超时.
*
* @param client
*/

private static void setCxfTimeOut(Client client) {
// 设置超时单位为毫秒
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(10000); // 连接超时
httpClientPolicy.setAllowChunking(false); // 取消块编码
httpClientPolicy.setReceiveTimeout(10000); // 响应超时
http.setClient(httpClientPolicy);
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cxf wsdl