0

我正在将 Web 应用程序从 websphere 环境迁移到 tomcat7 和 Axis2。我有许多给我带来问题的网络服务。

Web 服务是使用 Eclipse (Juno) 中的 Web 服务向导从 Java 类创建的。相应的文件夹在 WEB-INF/services 下创建,应用程序可以调用服务。返回简单对象(字符串、整数等)的服务工作正常。返回自定义对象(例如客户、国家/地区)的服务会生成包含以下内容的错误响应:

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

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

什么可能导致这个问题?

4

2 回答 2

1

不确定 Axis2,可能类似,但为了调试此类问题,使用 Axis,我将在 WSDD 文件中添加 LogHandler。这样,您将看到导致此问题的异常。对于 tomcat,请参阅如何为 Tomcat/Axis Web 服务记录 SOAP 消息

对于 Axis2,您需要编写一个简单的模块,请参阅编写您自己的 Axis2 模块

于 2012-11-12T11:14:21.440 回答
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 对这些事情更敏感。

于 2012-11-12T13:14:23.663 回答