2016-08-17 217 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生成的存根无法获得结果。我选择了这种方法