我尝试通过在服务中添加一个 main 方法将 Web 服务作为 java 应用程序运行,我得到了所有模型值的完美填充。Oracle 10g DB 有一些 DAO 操作,在我的类路径中有 classes12.jar。
然后我创建了一个 wsdl 并在 SOAP UI 中对其进行了测试。在那里我可以看到该服务正在返回一个空对象作为响应。
wsdl 是使用 Apache AXIS v1.4 创建的。
这意味着生成的 wsdl 不正确,因为当我将其作为 java 客户端应用程序运行时,我的所有代码都运行良好。
附加信息:
当 Web 服务中存在的方法的返回类型为整数时,则在使用 SOAP UI 调用 Web 服务时会正确返回该值。但是当我尝试返回模型时,会返回一个空响应对象。
WSDL:
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
<wsdl:types>
<schema elementFormDefault="qualified" targetNamespace="http://service.com" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://model.com"/>
<element name="getAge">
<complexType/>
</element>
<element name="getAgeResponse">
<complexType>
<sequence>
<element name="getAgeReturn" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="fetchEmployeeDetails">
<complexType>
<sequence>
<element name="empId" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="fetchEmployeeDetailsResponse">
<complexType>
<sequence>
<element name="fetchEmployeeDetailsReturn" type="tns1:EmployeeDetails"/>
</sequence>
</complexType>
</element>
</schema>
<schema elementFormDefault="qualified" targetNamespace="http://model.com" xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="EmployeeDetails">
<sequence>
<element name="age" type="xsd:int"/>
<element name="deptId" type="xsd:int"/>
<element name="empId" type="xsd:int"/>
<element name="empName" nillable="true" type="xsd:string"/>
<element name="sex" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</schema>
</wsdl:types>
<wsdl:message name="fetchEmployeeDetailsResponse">
<wsdl:part element="impl:fetchEmployeeDetailsResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getAgeRequest">
<wsdl:part element="impl:getAge" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getAgeResponse">
<wsdl:part element="impl:getAgeResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="fetchEmployeeDetailsRequest">
<wsdl:part element="impl:fetchEmployeeDetails" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="WebService1">
<wsdl:operation name="getAge">
<wsdl:input message="impl:getAgeRequest" name="getAgeRequest">
</wsdl:input>
<wsdl:output message="impl:getAgeResponse" name="getAgeResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="fetchEmployeeDetails">
<wsdl:input message="impl:fetchEmployeeDetailsRequest" name="fetchEmployeeDetailsRequest">
</wsdl:input>
<wsdl:output message="impl:fetchEmployeeDetailsResponse" name="fetchEmployeeDetailsResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WebService1SoapBinding" type="impl:WebService1">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getAge">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getAgeRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getAgeResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="fetchEmployeeDetails">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="fetchEmployeeDetailsRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="fetchEmployeeDetailsResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WebService1Service">
<wsdl:port binding="impl:WebService1SoapBinding" name="WebService1">
<wsdlsoap:address location="http://localhost:8045/WebService1/services/WebService1"/>
</wsdl:port>
</wsdl:service>
请帮我解决这个问题。如果需要一些额外的信息,请询问。
问候,