Java Axis2实现和存根生成问题

Java Axis2实现和存根生成问题,java,apache,wsdl,axis2,wsdl2java,Java,Apache,Wsdl,Axis2,Wsdl2java,我正在使用wsdl2java生成服务。生成的参数如下: -p com.dummy.tst.service -u -f -sp -s -b -ssi -d xmlbeans -uri /some/path/service.wsdl -ss -g -sd -o /some/path/gen 在生成之后,我得到了一个services.xml文件,其中有一行 <parameter name="ServiceClass">com.dummy.tst.service.TestSoapBindi

我正在使用wsdl2java生成服务。生成的参数如下:

-p com.dummy.tst.service -u -f -sp -s -b -ssi -d xmlbeans -uri /some/path/service.wsdl -ss -g -sd -o /some/path/gen
在生成之后,我得到了一个services.xml文件,其中有一行

<parameter name="ServiceClass">com.dummy.tst.service.TestSoapBindingImpl</parameter>
还有一个TestSoapBindingStub.java文件,它实际上包含实现的方法。在axis-1中只有一个包含方法描述和实现的文件,而在axis-2中我有两个文件


我应该如何处理这些文件?Impl文件,即指定为默认服务方法容器(在services.xml中)的文件,只包含虚拟对象,因此我不能使用已部署的服务,在services.xml中将TestSoapBindingImpl替换为TestSoapBindingStub也不会得到所需的结果。

TestSoapBindingStub.java
用于客户端。它包含在远程系统上调用web服务的代码

在服务端,每次传入请求时,Axis2都会创建一个在
services.xml
中指定类型的对象作为ServiceClass。然后,它将使用客户端提供的对象在ServiceClass对象内调用请求的函数

使用wsdl2java生成的代码,对服务的每次调用都将创建一个类型为
om.dummy.tst.service.TestSoapBindingImpl
的对象,正如您所注意到的,它将为每次调用抛出一个异常。有两种方法可以提供有效的服务

  • 您可以使用
    testsoapbindingpimpl.java
    文件作为起点。从每个函数中删除
    throws
    行,并在每个函数体中填入请求传入时实际要执行的代码

  • 或者,您可以使用
    services.xml
    作为起点。定义一个自己的类作为服务类。将对com.dummy.tst.service.TestSoapBindingImpl的引用替换为对您自己的服务类名称的引用。wsdl2java可能生成了一个名为
    TestSoapBindingSkeleton.java
    的文件,该文件定义了服务类应该实现的接口。您的自定义服务类应该实现此接口

  • 我一直致力于的项目使用方法2。我们编写自己的服务类来实现框架接口。将服务打包到AAR文件中时,将
    services.xml
    文件包含在AAR中。我们的打包规则对生成的
    services.xml
    执行文本替换,以使用我们的服务类的名称更新ServiceClass

    throw new  java.lang.UnsupportedOperationException("Please implement " + this.getClass().getName() + "#myMethod");