axis2 wsdl2java 报错_CXF调用Webservice项目在linux系统上报错

本文介绍了在Linux环境下使用Axis2进行WSDL2Java转换时遇到的问题及解决方法。博主首先尝试使用CXF调用Webservice,但在Linux服务器上出现异常。随后通过下载并执行Axis2的wsdl2java.sh脚本成功生成客户端代码,并提供了详细步骤。此外,还提到了使用RPC方式手动拼装请求XML作为替代方案。

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

d0adccca9b35691627701b9ab5b7164a.png

惭愧,博主水平有限,百度一翻也没解决这个问题,最后舍弃cxf,使用axis2框架解决了这个问题。。。

2.在http://axis.apache.org/axis2/java/core/download.cgi官网下载

e4a0dcb27e40fb9a462203ba908f07f5.png

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

ca1e4717c1f98b07ad17519549245448.png

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里面

718052ffc51ff363ee835b1c685d466d.png

2.4.  客户端调用代码如下

b19db290422a49749c73de30b2ac593d.png

注意 :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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值