`

WebService调用时空指针异常解决方案

阅读更多
由于对WebService了解不深,在工作中首次碰到,调用时出现了如下异常,异常提示信息如下:
Exception in thread "main" AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.lang.NullPointerException
 faultActor: 
 faultNode: 
 faultDetail: 
	{}faultData:null
	{http://xml.apache.org/axis/}hostname:test

java.lang.NullPointerException
	at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
	at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
	at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
	at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
	at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at com.jira.webservice.client.JirasoapserviceV2SoapBindingStub.getIssue(JirasoapserviceV2SoapBindingStub.java:3727)
	at com.test.Test.main(Test.java:17)

   这异常困扰了我整整两天,在网上百度和谷歌的前几页相关的资料都翻遍了也没找到有效的解决方案,更多的是有人提问没人回答。问题到底出在哪,有人说版本的问题,好,我换jdk,我换Tomcat,换axis的jar包,可异常还是稳如泰山,可恶可恨,无助无奈。我下axis源代码,步步调试,发现问题是出在调用invoke方法上,可看来看去参数也不会为空;从异常来看userException,我有填用户名和密码啊,空指针到底什么为空?没办法,要有耐心继续调试,想到一种方法就用一种,偶然间我调用其它方法发现可以正常运行,这下我看到了希望,我将原来的方法换个参数试试也能正常运行,这下我看到了光明。离晴天仅一步之遥,却无法前进一步,问题实在太怪了,没办法只好求助经理,经理来了,调了几下,也觉得很怪,但经理毕竟有经验啊,我只停留在客户端代码的调试,根本就没想到服务端代码的调试,经理将日志改为debug模式,重新运行查看日志,结果很快就看到了有一处报userException,具体的哪一行代码出错很显眼显示在上面。找到相应的代码,发现原来是那个参数所对应的代码调用了ActionContext来获得user,而我用WebService来调用是没有初始化ActionContext,所以取到的user也是空的,所以报了空指针,修改后就没有问题了。
0
1
分享到:
评论
6 楼 yu一生有你 2014-02-17  
请问ActionContext为空,应如何解决?
5 楼 FAT0708 2012-03-21  
谢谢了!!
4 楼 xafc2370 2012-03-21  
FAT0708 写道
xafc2370 写道
FAT0708 写道
1、请问你是修改的客户端还是服务端?
2、如果修改的是客户端,ActionContext怎么初始化的?
以上,谢谢。

修改的是服务端。

1、是不是把抛出异常的地方改掉?
2、如果不能修改服务端,是不是意味着没有办法了呢?

是的,在服务端抛出异常的代码段做修改。修改服务端是直接有效的方法,如果不能修改服务端,你就避免调用存在问题的方法,是否有其它改善的途径,我不得而知。
3 楼 FAT0708 2012-03-21  
xafc2370 写道
FAT0708 写道
1、请问你是修改的客户端还是服务端?
2、如果修改的是客户端,ActionContext怎么初始化的?
以上,谢谢。

修改的是服务端。

1、是不是把抛出异常的地方改掉?
2、如果不能修改服务端,是不是意味着没有办法了呢?
2 楼 xafc2370 2012-03-21  
FAT0708 写道
1、请问你是修改的客户端还是服务端?
2、如果修改的是客户端,ActionContext怎么初始化的?
以上,谢谢。

修改的是服务端。
1 楼 FAT0708 2012-03-21  
1、请问你是修改的客户端还是服务端?
2、如果修改的是客户端,ActionContext怎么初始化的?
以上,谢谢。

相关推荐

    webservice调用终极解决方案_webservice_源码

    "webservice调用终极解决方案.docx"很可能包含了详细的步骤、示例代码和常见问题解答,它可以帮助开发者快速理解和应用这些解决方案。文档中可能涵盖了如何创建WSDL文件、如何生成客户端代理类、如何调试和测试Web ...

    C#webservice调用测试工具

    【标题】:“C# WebService调用测试工具” 在IT领域,Web Service是一种基于网络的、松散耦合的软件组件,它允许不同系统之间的数据交换。C# WebService调用测试工具是专为开发者设计的,用于测试和调试Web Service...

    WebService调用的几种方式

    本文将深入探讨在Java环境中调用WebService的五种主要方式:Axis、CXF、HttpClient、MyEclipse反向生成以及XFire。 1. Axis:Apache Axis是最早且广泛使用的SOAP库,用于创建和消费Web服务。使用Axis调用WebService...

    WebService调用代码样例

    本示例主要关注的是如何使用Java进行WebService调用,这在企业级应用开发中非常常见,特别是在需要跨平台集成时。以下是关于这个主题的一些详细知识点: 1. **WebService的基本概念**: WebService是一种基于开放...

    webService调用实例 Demo

    【标题】:“webService调用实例 Demo” 在IT行业中,Web Service是一种常见的应用程序接口(API)形式,它允许不同系统间的交互,无论它们是用何种编程语言或运行在何种操作系统上。本“webService调用实例 Demo”...

    Webservice 调用工具

    【Webservice调用工具】 Webservice调用工具是专门用于测试和交互Web服务的软件,它们使得开发者能够方便地发送请求并接收响应,以便验证Web服务的功能和性能。Web服务通常基于SOAP(Simple Object Access Protocol...

    超简单的webservice调用

    【标题】"超简单的webservice调用"涉及的是在Java环境下使用Hutool库进行Web Service接口调用的基础知识。Web Service是一种基于网络的、松散耦合的软件组件交互方式,它允许不同系统间的应用共享数据和服务。在这个...

    SAP-WEBSERVICE调用案例

    ### SAP-WEBSERVICE调用案例 #### 一、引言 随着企业信息化建设的深入发展,SAP作为企业管理软件的佼佼者,在业务流程整合与优化方面扮演着至关重要的角色。而Web Service作为一种标准的跨平台服务交互方式,使得...

    webservice接口调用实例

    7. **异常处理**:在调用过程中可能出现网络错误、服务端错误等问题,需要编写适当的异常处理代码来捕获并处理这些问题。 在实际应用中,Web Service接口调用还涉及到安全性、性能优化和版本控制等话题。例如,可以...

    WebService调用测试工具

    WebService调用测试工具,支持大部分wsdl调用。

    WSDl生成WebService接口及调用

    在本主题中,我们将深入探讨如何使用WSDL生成WebService接口以及编写Test调用方法进行测试。 1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作...

    短信验证码Webservice调用

    这些资源可以帮助开发者了解具体的实现细节,包括如何构造请求,如何处理响应,以及可能遇到的问题和解决方案。 总之,短信验证码Webservice调用是提升用户体验和系统安全的重要手段。通过合理的API设计和安全实践...

    java 调用 odi webservice

    ODI(Oracle Data Integrator)是一种数据集成平台,提供了webservice接口,允许用户通过webservice调用ODI方案执行,从而实现数据的同步。 在本文档中,我们将通过 Java 应用程序调用 ODI webservice,实现数据的...

    WebService调用技术文档

    **WebService调用技术文档** **一、WebService简介** WebService是一种基于开放标准的Web应用程序,它能够提供跨平台、跨语言的互操作性。通过使用XML(可扩展标记语言)进行数据交换,SOAP(简单对象访问协议)...

    REST WebService 调用工具类

    相信大家在调用rest webservice通常使用httpclient.该示例代码是使用httpconnection的形式,以POST和GET两种方式提交调用REST WebService。在项目中一直使用的工具类,分享给大家

    VC++中WebService服务的调用

    在VC++中调用WebService服务是一项常见的任务,尤其在跨平台通信、系统集成或扩展应用程序功能时。WebService是一种基于Web的、松耦合的服务,它使用标准的HTTP协议进行通信,并通过XML(eXtensible Markup Language...

    webservice调用,传参代码样例

    Web服务(WebService)是一种基于标准协议的,可互操作的软件接口,允许不同系统之间进行数据交换和功能调用。在本案例中,我们将重点讨论如何使用Axis框架来调用Web服务并传递参数。 首先,我们需要理解Web服务的...

    webservice调用小工具

    挺好用的webservice开发工具.直接输入webservice地址,然后输入入参,即可调用.

    oracle 调用webservice

    本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...

    MVC调用webService

    **MVC调用WebService详解** 在C#的MVC(Model-View-Controller)框架中,调用WebService是一项常见的任务,通常用于实现客户端与服务器之间的数据交互。在本例中,我们将探讨如何在MVC应用中使用JavaScript进行异步...

Global site tag (gtag.js) - Google Analytics