2016-08-17 138 views
0

我正在嘗試使用大型機系統中的Web服務。我生成從WSDL的存根和它產生的端點代碼類似下面SOAP客戶端響應

@WebMethod(operationName = "ADDWEBSOperation") 
    @RequestWrapper(localName = "ADDWEBSOperation", targetNamespace = "http://www.*****.******.Request.com", className = "com.*****.*****.addwebs.ProgramInterface") 
    @ResponseWrapper(localName = "ADDWEBSOperationResponse", targetNamespace = "http://www.***.***.Response.com", className = "com.*****.*****.addwebs.ProgramInterface") 
    public void addwebsOperation(
     @WebParam(name = "Num1", targetNamespace = "http://www.***.****.Request.com", mode = WebParam.Mode.INOUT) 
     Holder<Integer> num1, 
     @WebParam(name = "Num2", targetNamespace = "http://www.*****.*****.Request.com", mode = WebParam.Mode.INOUT) 
     Holder<Integer> num2, 
     @WebParam(name = "Result", targetNamespace = "http://www.*****.*****.Request.com", mode = WebParam.Mode.INOUT) 
     Holder<Integer> result); 

} 

這表明該服務端點返回什麼(無效)。

它是一個簡單的計算器服務,其中Num1Num2被添加並將其移動到Result

現在,如果我在SOAP UI中使用WSDL,它給了我一個適當的響應。

我已經完成了類似這樣的編碼。

public class TestClass { 

    public static void main(String[] args) { 
    ADDWEBSService srvc = new ADDWEBSService(); 
     Holder<Integer> n2 = new Holder<Integer>(); 
     Holder<Integer> n1 = new Holder<Integer>(); 
     Holder<Integer> rs = new Holder<Integer>(); 
     n1.value = 10; 
     n2.value = 2; 
     srvc.getADDWEBSPort().addwebsOperation(n1, n2, rs); 
    } 
} 

我沒有得到如何得到顯示結果。我的服務電話是成功的,但我需要幫助來顯示響應值(rs)。

這裏是WSDL的spinet。

<?xml version="1.0" ?> 
<definitions targetNamespace="http://www.***.***.com" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:reqns="http://www.***.***.Request.com" xmlns:resns="http://www.***.***.Response.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.***.***.com"> 
    <types> 
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://www.***.***.Request.com" xmlns:tns="http://www.***.***.Request.com"> 
     <xsd:annotation> 
      <xsd:documentation source="http://www.***.com/sftware/***/cics/annotations">This schema was generated by the CICS Web services assistant.</xsd:documentation> 
     </xsd:annotation> 
     <xsd:annotation> 
      <xsd:appinfo source="http://www.***.com/sftware/***/cics/annotations"> 
com.***.cics.wsdl.properties.mappingLevel=3.0</xsd:appinfo> 
     </xsd:annotation> 
     <xsd:complexType abstract="false" block="#all" final="#all" mixed="false" name="ProgramInterface"> 
      <xsd:sequence> 
       <xsd:element name="Num1" nillable="false"> 
        <xsd:simpleType> 
        <xsd:annotation> 
         <xsd:appinfo source="http://www.***.com/sftware/***/cics/annotations"> 
com.***.cics.wsdl.properties.synchronized=false</xsd:appinfo> 
        </xsd:annotation> 
        <xsd:restriction base="xsd:unsignedShort"> 
         <xsd:maxInclusive value="99"/> 
         <xsd:minInclusive value="0"/> 
        </xsd:restriction> 
        </xsd:simpleType> 
       </xsd:element> 
       <xsd:element name="Num2" nillable="false"> 
        <xsd:simpleType> 
        <xsd:annotation> 
         <xsd:appinfo source="http://www.***.com/sftware/***/cics/annotations"> 
com.***.cics.wsdl.properties.synchronized=false</xsd:appinfo> 
        </xsd:annotation> 
        <xsd:restriction base="xsd:unsignedShort"> 
         <xsd:maxInclusive value="99"/> 
         <xsd:minInclusive value="0"/> 
        </xsd:restriction> 
        </xsd:simpleType> 
       </xsd:element> 
       <xsd:element name="Result" nillable="false"> 
        <xsd:simpleType> 
        <xsd:annotation> 
         <xsd:appinfo source="http://www.***.com/sftware/***/cics/annotations"> 
com.***.cics.wsdl.properties.synchronized=false</xsd:appinfo> 
        </xsd:annotation> 
        <xsd:restriction base="xsd:unsignedShort"> 
         <xsd:maxInclusive value="9999"/> 
         <xsd:minInclusive value="0"/> 
        </xsd:restriction> 
        </xsd:simpleType> 
       </xsd:element> 
      </xsd:sequence> 
     </xsd:complexType> 
     <xsd:element name="ADDWEBSOperation" nillable="false" type="tns:ProgramInterface"/> 
     </xsd:schema> 
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://www.***.***.Response.com" xmlns:tns="http://www.***.***.Response.com"> 
     <xsd:annotation> 
      <xsd:documentation source="http://www.***.com/sftware/***/cics/annotations">This schema was generated by the CICS Web services assistant.</xsd:documentation> 
     </xsd:annotation> 
     <xsd:annotation> 
      <xsd:appinfo source="http://www.***.com/sftware/***/cics/annotations"> 
com.***.cics.wsdl.properties.mappingLevel=3.0</xsd:appinfo> 
     </xsd:annotation> 
     <xsd:complexType abstract="false" block="#all" final="#all" mixed="false" name="ProgramInterface"> 
      <xsd:sequence> 
       <xsd:element name="Num1" nillable="false"> 
        <xsd:simpleType> 
        <xsd:annotation> 
         <xsd:appinfo source="http://www.***.com/sftware/***/cics/annotations"> 
com.***.cics.wsdl.properties.synchronized=false</xsd:appinfo> 
        </xsd:annotation> 
        <xsd:restriction base="xsd:unsignedShort"> 
         <xsd:maxInclusive value="99"/> 
         <xsd:minInclusive value="0"/> 
        </xsd:restriction> 
        </xsd:simpleType> 
       </xsd:element> 
       <xsd:element name="Num2" nillable="false"> 
        <xsd:simpleType> 
        <xsd:annotation> 
         <xsd:appinfo source="http://www.***.com/sftware/***/cics/annotations"> 
com.***.cics.wsdl.properties.synchronized=false</xsd:appinfo> 
        </xsd:annotation> 
        <xsd:restriction base="xsd:unsignedShort"> 
         <xsd:maxInclusive value="99"/> 
         <xsd:minInclusive value="0"/> 
        </xsd:restriction> 
        </xsd:simpleType> 
       </xsd:element> 
       <xsd:element name="Result" nillable="false"> 
        <xsd:simpleType> 
        <xsd:annotation> 
         <xsd:appinfo source="http://www.***.com/sftware/***/cics/annotations"> 
com.***.cics.wsdl.properties.synchronized=false</xsd:appinfo> 
        </xsd:annotation> 
        <xsd:restriction base="xsd:unsignedShort"> 
         <xsd:maxInclusive value="9999"/> 
         <xsd:minInclusive value="0"/> 
        </xsd:restriction> 
        </xsd:simpleType> 
       </xsd:element> 
      </xsd:sequence> 
     </xsd:complexType> 
     <xsd:element name="ADDWEBSOperationResponse" nillable="false" type="tns:ProgramInterface"/> 
     </xsd:schema> 
    </types> 
    <message name="ADDWEBSOperationResponse"> 
     <part element="resns:ADDWEBSOperationResponse" name="ResponsePart"/> 
    </message> 
    <message name="ADDWEBSOperationRequest"> 
     <part element="reqns:ADDWEBSOperation" name="RequestPart"/> 
    </message> 
    <portType name="ADDWEBSPort"> 
     <operation name="ADDWEBSOperation"> 
     <input message="tns:ADDWEBSOperationRequest" name="ADDWEBSOperationRequest"/> 
     <output message="tns:ADDWEBSOperationResponse" name="ADDWEBSOperationResponse"/> 
     </operation> 
    </portType> 
    <binding name="ADDWEBSHTTPSoapBinding" type="tns:ADDWEBSPort"> 
     <!-- This soap:binding indicates the use of SOAP 1.1 --> 
     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
     <operation name="ADDWEBSOperation"> 
     <soap:operation soapAction="" style="document"/> 
     <input name="ADDWEBSOperationRequest"> 
      <soap:body parts="RequestPart" use="literal"/> 
     </input> 
     <output name="ADDWEBSOperationResponse"> 
      <soap:body parts="ResponsePart" use="literal"/> 
     </output> 
     </operation> 
    </binding> 
    <service name="ADDWEBSService"> 
     <port binding="tns:ADDWEBSHTTPSoapBinding" name="ADDWEBSPort"> 
     <!-- This soap:address indicates the location of the Web service over HTTP. 
       Please replace "my-server" with the TCPIP host name of your CICS region. 
       Please replace "my-port" with the port number of your CICS TCPIPSERVICE. --> 
     <soap:address location="http://**.**.*.***:****/addwebs"/> 
     <!-- This soap:address indicates the location of the Web service over HTTPS. --> 
     <!-- <soap:address location="https://my-server:my-port/addwebs"/> --> 
     <!-- This soap:address indicates the location of the Web service over WebSphere MQSeries. 
       Please replace "my-queue" with the appropriate queue name. --> 
     <!-- <soap:address location="jms:/queue?destination=my-queue&amp;connectionFactory=()&amp;targetService=/addwebs&amp;initialContextFactory=com.***.mq.jms.Nojndi" /> --> 
     </port> 
    </service> 
</definitions> 
+0

我不確定我是否理解你。該服務執行時沒有錯誤,並且rs.value'爲空?你可以使用'System.out.println(rs.value)'打印它' – pedrofb

+0

是的..不僅rs.value n1.value和n2.value在執行服務後將爲空 – Geek

+0

你可以發佈xsd的片段顯示你正在返回的對象? – Miles

回答

0

我已經通過創建SOAP請求XML並通過HTTPConnection發送並接收到XML響應來解決此問題。使用WSDL生成的存根無法獲得結果。我選擇了這種方法