1,最近工作的项目大量使用cxf框架调用webservice,开发完成部署到linux系统的服务器时,出现异常

惭愧,博主水平有限,百度一翻也没解决这个问题,最后舍弃cxf,使用axis2框架解决了这个问题。。。
2.在http://axis.apache.org/axis2/java/core/download.cgi官网下载

将下载好的文件考到linux服务器上的某个文件夹

2.1.使用命令进入axis2-1.4的bin 目录,执行
./wsdl2java.sh -uri webservice接口的wsdl,如
./wsdl2java.sh -uri http://******?wsdl
2.2.执行过后可能会提醒你没有JAVA_HOME的路径,执行
export -JAVA_HOME= jdk的安装目录,如
export -JAVA_HOME = ./opt/jdk
2.3再执行上述命令,会在bin目录里面生成src文件,里面是生成的客户端代码,将其拷贝到windows上的eclipse里面

2.4. 客户端调用代码如下

注意 :URL 不是wsdl 是发布的web服务地址
第二种方法:
使用RPC调用,自己拼装请求xml,虽然繁琐,但没有在遇到稀奇古怪的错误
public static OMElement sendWebserviceByRPC(String serviceUrl,String methodName,String namespace,String namespacePrefix,Mapparams) throws Exception{
EndpointReference targetEPR = new EndpointReference(serviceUrl);// 接口地址
RPCServiceClient sender = new RPCServiceClient();
Options options = sender.getOptions();
options.setTo(targetEPR);
options.setAction(" ");// 调用接口方法
OMFactory fac = OMAbstractFactory.getOMFactory();
// 设置命名空间
OMNamespace omNs = fac.createOMNamespace(namespace, namespacePrefix);
// 设置方法名称
OMElement method = fac.createOMElement(methodName, omNs);
for (Map.Entryentry : params.entrySet())
if ((entry.getKey() != null)
&& (!"".equals(((String) entry.getKey()).trim()))) {
OMElement value = fac.createOMElement((String) entry.getKey(),
null);
value.setText(entry.getValue() + "");
method.addChild(value);
}
//for (int i = 0; i < param.length; i++) {
//// 设置入参名称
//OMElement name = fac.createOMElement(param[i], null);
//// 设置入参值
//name.setText(values[i]);
//method.addChild(name);
//}
method.build();
logger.info("接口请求参数:" + method);
OMElement response = sender.sendReceive(method); // 获取处理结果
logger.info("接口响应参数:" + response);
return response;
本文介绍了在Linux环境下使用Axis2进行WSDL2Java转换时遇到的问题及解决方法。博主首先尝试使用CXF调用Webservice,但在Linux服务器上出现异常。随后通过下载并执行Axis2的wsdl2java.sh脚本成功生成客户端代码,并提供了详细步骤。此外,还提到了使用RPC方式手动拼装请求XML作为替代方案。
5700

被折叠的 条评论
为什么被折叠?



