来自Web服务的InvocationTargetException,它返回一个自定义对象

时间:2012-11-12 11:03:43

标签: java eclipse axis2

我正在将web应用程序从websphere环境迁移到tomcat7& Axis2的。我有很多网络服务导致我出现问题。

使用eclipse(Juno)中的Web服务向导从Java类创建Web服务。在WEB-INF / services下创建相应的文件夹,应用程序可以调用服务。返回简单对象(String,int等)的服务工作正常。返回自定义对象(例如Customer,Country)的服务会生成错误响应,其中包含以下内容:

<faultcode>soapenv:Server</faultcode>
<faultstring>java.lang.reflect.InvocationTargetException</faultstring>
<detail/>

自定义对象是可序列化的,并且具有公共null构造函数。就像测试一样,我将返回类型更改为String并将toString()添加到返回值 - 它工作正常。

可能导致此问题的原因是什么?

2 个答案:

答案 0 :(得分:1)

不确定Axis2,可能类似,但为了调试这些问题,使用Axis,我会在WSDD文件中添加LogHandler。这样您就会看到导致此异常的异常。对于tomcat,请参阅How to log SOAP messages for a Tomcat/Axis Web Service

对于Axis2,您需要编写一个简单的模块,请参阅Writing Your Own Axis2 Module

答案 1 :(得分:0)

要从Axis2获取一些日志记录,我能够将以下内容添加到我的log4j.xml中:

<category name="org.apache.axis2" additivity="false">
    <priority value="trace"/>
    <appender-ref ref="roller"/>
    <appender-ref ref="console"/>
</category>

然后我能够看到 InvocationTargetException 的根本原因是我的一个类中的NullPointerException。 Axis2似乎比Axis1更敏感。