有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Axis WSDL2Java生成问题

我编写了一些由几个文件(wsdl、xsd)组成的简单服务。 在xsd文件中,我有以下定义:

<xs:complexType name="ServerMessage">
    <xs:sequence>
        <xs:element name="type" type="xs:int"/>
        <xs:element name="info" type="xs:string"/>
    </xs:sequence>
</xs:complexType>
<xs:element name="ServerMessage" type="tns:ServerMessage"/>

然后在wsdl文件中引用该元素,如下所示

<wsdl:message name="createItemFault">
    <wsdl:part name="createItemFault" element="tns:ServerMessage"/>
</wsdl:message>

<wsdl:portType name="Service">
    <wsdl:operation name="createItem">
        <wsdl:input message="tns:createItemRequest"/>
        <wsdl:output message="tns:createItemResponse"/>
        <wsdl:fault name="Fault" message="tns:createItemFault"/>
    </wsdl:operation>

最后

<wsdl:binding name="ServiceBinding" type="intf:Service">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

    <wsdl:operation name="createItem">
        <soap:operation soapAction="http://test.com/createItem"/>
        <wsdl:input>
            <soap:body use="literal"/>
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal"/>
        </wsdl:output>
        <wsdl:fault name="Fault">
            <soap:fault name="Fault" use="literal"/>
        </wsdl:fault>
    </wsdl:operation>

启动WSDL2Java后,我收到以下代码

public interface ServerMessage extends org.apache.xmlbeans.XmlObject
{

为什么ServerMessage的定义是这样的?当我使用Axis1提供的WSDL2Java时,java文件中的最终定义如下

 public class ServerMessage extends org.apache.axis.AxisFault  implements java.io.Serializable

在Axis2生成后,生成的“项目”有很大的不同,甚至不可丢弃。我做错了什么


共 (1) 个答案

  1. # 1 楼答案

    从该WSDL中,您应该得到一个CreateItemFault(由于wsdl:message名称),它看起来像:

    public class CreateItemFault extends java.lang.Exception {
        private org.example.www.service.ServerMessageDocument faultMessage;
        ...
    }
    

    ServerMessageDocument可能看起来像:

    public interface ServerMessageDocument extends org.apache.xmlbeans.XmlObject {
        ...
        org.example.www.service.ServerMessage getServerMessage();
    
        void setServerMessage(org.example.www.service.ServerMessage serverMessage);
    
        org.example.www.service.ServerMessage addNewServerMessage();
        ...
    }
    

    下面是我们到你们的ServerMessage的地方:

    public interface ServerMessage extends org.apache.xmlbeans.XmlObject {
        ...
    }
    

    不过,方法签名应该抛出一个CreateItemFault