Axis 2 org.apache.axis2.AxisFault: Namespace URI may not be null 解决办法。已试过多种后的

在使用Axis2时遇到org.apache.axis2.AxisFault: Namespace URI may not be null的错误。尝试将_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true)改为_setExceptionToBeThrownOnSOAPFault(false),但问题未解决。后来发现是服务端使用xfire导致的不兼容问题,最终通过更换为xfire并解决依赖问题成功解决问题。建议遇到此类问题时,先检查自身环境和代码,若问题持续,与服务端沟通并尽量使用相同工具和版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己发现错误记录
使用axis2 生成桩代码后,调用时报错,Namespace Uri May Not be null
去网上搜,说缺包的,jdk 版本的,myeclipse jar冲突的都有。都不管用。
自己debug桩代码发现,
         _serviceClient.addHeadersToEnvelope(env);
        // set the message context with that soap envelope
        _messageContext.setEnvelope(env);
        // add the message contxt to the operation client
        _operationClient.addMessageContext(_messageContext);
        //execute the operation client  执行远程方法调用
        _operationClient.execute(true);
        //返回信息
               org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient.getMessageContext(
                                           org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
  
  org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
// _returnEnv 应该是返回的xml信息
  //当我debug 到这时 鼠标放上查看信息,写的并不是xml,但是我用鼠标点击对象一下,显示的信息变为xml了。而且里面可以看到返回信息,
  //更奇怪的是,放行debug 后程序成功执行。但是没有解析到返回值。
  //多次debug 发现,只要我在这个位置用鼠标点击查看到xml 程序就可以执行,不点击或者不debug 都会报错Namespace Uri May Not be null
  //我就认为是xml解析出现问题,也没有想去反编译什么的。就继续在网上搜
  //看到兄弟写的反编译,我决定好好看看,说不定有解决思路。果然。如兄弟所说
  可以看到Axis2的内部处理机制,就是一但发现响应报文有Fault节点,它就要抛异常。
  于是将options..setExceptionToBeThrownOnSOAPFault(true),改为false,程序立刻好了。执行没问题,返回值也获取到了。
  
  感谢原作者
  总结:按兄弟说的,一切的害怕源于对代码的神秘,未知,当你把它当成自己写的代码,去反编译,去阅读,那就不会再害怕!
options.setExceptionToBeThrownOnSOAPFault(false);  
org.apache.axis2.client.Options 
如果有桩代码可以在桩代码里改,里面有默认的true

_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);

改为

_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(false);


下边链接是我看到的解决办法的兄弟写的,可以去看看。

参考链接:

https://blog.youkuaiyun.com/wandrong/article/details/70275429#commentsedit点击打开链接


啊啊啊啊啊 还是没解决  你们参考下就算了我自己的还没解决555555


几天后我又来了  这次真的解决了哈哈哈哈。

写服务的终于给回复了,他们使用xfire 写的,不知道什么原因,axis2 和cxf 解析xfire 返回的xml  都报错,可能是不兼容,或者版本问题。实在不行我换了xfire 自己找包,用xfire 来了一版。至于缺少的依赖包,根据报错提示导入就行。最后执行顺利通过,总算解决了。


遇到问题首先查询是否自己环境、代码问题。如果是非常顽固的问题,还是与服务端沟通。最好使用同一工具同一版本。累死啦。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值