【发布时间】:2010-09-16 13:12:00
【问题描述】:
我实际上是在使用 Axis 2 用 Java 开发 Web 服务。 我将我的服务设计为一个带有公共方法抛出异常的 POJO(普通旧 Java 对象):
public class MyService {
public Object myMethod() throws MyException {
[...]
}
}
然后我使用 Axis2 ant 任务生成了 WSDL。使用 WSDL,我生成了一个客户端存根来测试我的服务。生成的代码在存根声明中包含“MyExceptionException”和“myMethod”以抛出:
public class MyServiceStub extends org.apache.axis2.client.Stub {
[...]
public MyServiceStub.MyMethodResponse myMethod(MyServiceStub.MyMethod myMethod)
throws java.rmi.RemoteException, MyExceptionException0 {
[...]
}
[...]
}
但是当调用被catch包围的方法时,“MyExceptionException”永远不会被传输AxisFault的服务器传输(RemoteException的子类)。
我认为问题出在服务器端,但找不到位置。该服务作为 aar 文件部署在 Tomcat 5.5 服务器上的axis2 webapp 中。 services.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<service name="MyService" scope="application">
<description></description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">MyService</parameter>
<parameter name="ServiceTCCL">composite</parameter>
</service>
如果行为正常,那么我将放弃使用异常(这对我的项目来说并不重要),但我很谨慎为什么 Java2WSDL 在操作输入和输出声明中生成自定义
【问题讨论】:
标签: java web-services exception axis