[英]Null response object from Java Web Service
我尝试通过在服务中添加主要方法来将Web Service作为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>
请帮助我。 如果需要一些其他信息,请询问。
问候,
错误是使用main方法进行单元测试,然后从main方法将其作为java应用程序运行。 问题与classes12.jar放置有关。 对于Web应用程序,应将jar放在lib文件夹旁边。 但这对于Java客户端应用程序是不一样的。 因此,当我尝试使用SOAP UI运行连接对象时,无法正确检索该连接对象。
结论:
切勿通过在服务类中添加主要方法并将其作为Java客户端应用程序运行来测试Web服务,否则可能会导致不必要的此类问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.