簡體   English   中英

Java Web Service的空響應對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM