如何使用JavaWeb服务在同一个信封中处理多个SOAP请求?

如何使用JavaWeb服务在同一个信封中处理多个SOAP请求?,java,web-services,soap,Java,Web Services,Soap,我目前有一个方法为的web服务: @Override @WebResult(Name="OIPResponse") public Map<String, Object> getOIP(@WebParam(name = "invoice") String invoiceNumber,@WebParam(name = "part") String partNumber) @覆盖 @WebResult(Name=“OIPResponse”) 公共地图getOIP(@WebParam(n

我目前有一个方法为的web服务:

@Override
@WebResult(Name="OIPResponse")
public  Map<String, Object> getOIP(@WebParam(name = "invoice") String invoiceNumber,@WebParam(name = "part") String partNumber)
@覆盖
@WebResult(Name=“OIPResponse”)
公共地图getOIP(@WebParam(name=“invoice”)字符串invoiceNumber,@WebParam(name=“part”)字符串partNumber)
我用来调用它的普通SOAP请求如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
                <entry>
                    <key>ERR_CODE</key>
                </entry>
                <entry>
                    <key>SELLING_OU</key>
                    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">null</value>
                </entry>
                ...
            </OIPResponse>
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587183</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587184</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587185</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
               ...
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <getMultipleOIP xmlns="http://oip.mycompany.com/">
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
        </getMultipleOIP>
    </Body>
</Envelope>

41587182
9ZF2A5-570
答案是这样的:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
                <entry>
                    <key>ERR_CODE</key>
                </entry>
                <entry>
                    <key>SELLING_OU</key>
                    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">null</value>
                </entry>
                ...
            </OIPResponse>
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587183</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587184</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587185</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
               ...
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <getMultipleOIP xmlns="http://oip.mycompany.com/">
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
        </getMultipleOIP>
    </Body>
</Envelope>

错误代码
卖你
无效的
...
我已经测试过了,效果很好。现在我想知道是否有一种方法可以在同一个SOAP信封中包含多个请求,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
                <entry>
                    <key>ERR_CODE</key>
                </entry>
                <entry>
                    <key>SELLING_OU</key>
                    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">null</value>
                </entry>
                ...
            </OIPResponse>
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587183</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587184</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587185</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
               ...
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <getMultipleOIP xmlns="http://oip.mycompany.com/">
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
        </getMultipleOIP>
    </Body>
</Envelope>

41587182
9ZF2A5-570
41587183
9ZF2A5-570
41587184
9ZF2A5-570
41587185
9ZF2A5-570
然后得到像这样的东西:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
                <entry>
                    <key>ERR_CODE</key>
                </entry>
                <entry>
                    <key>SELLING_OU</key>
                    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">null</value>
                </entry>
                ...
            </OIPResponse>
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587183</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587184</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587185</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
               ...
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <getMultipleOIP xmlns="http://oip.mycompany.com/">
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
        </getMultipleOIP>
    </Body>
</Envelope>

...
...
...
...

有什么方法可以做到这一点吗?

我最终创建了一个名为OIPRequest的POJO,其中包含我需要的两个参数(发票和零件号)和一个新方法getOIPMultiple,该方法将OIPreques数组作为输入参数

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class OIPRequest {
    public String invoiceNumber, partNumber;

    public OIPRequest(String invoice, String part) {
        invoiceNumber = invoice;
        partNumber = part;
    }

    public OIPRequest() {
        invoiceNumber = "";
        partNumber = "";
    }
} 
这使请求看起来像这样:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
                <entry>
                    <key>ERR_CODE</key>
                </entry>
                <entry>
                    <key>SELLING_OU</key>
                    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">null</value>
                </entry>
                ...
            </OIPResponse>
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oip="http://oip.mycompany.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <oip:getOIP>
         <invoice>41587182</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587183</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587184</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
      <oip:getOIP>
         <invoice>41587185</invoice>
         <part>9ZF2A5-570</part>
      </oip:getOIP>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:getOIPResponse xmlns:ns2="http://oip.mycompany.com/">
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
            <OIPResponse>
               ...
            </OIPResponse>
               ...
        </ns2:getOIPResponse>
    </soap:Body>
</soap:Envelope>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <getMultipleOIP xmlns="http://oip.mycompany.com/">
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
            <OIPRequest xmlns="">
                <invoiceNumber>41587182</invoiceNumber>
                <partNumber>9ZF2A5-570</partNumber>
            </OIPRequest>
        </getMultipleOIP>
    </Body>
</Envelope>

41587182
9ZF2A5-570
41587182
9ZF2A5-570
41587182
9ZF2A5-570

您不能修改操作以接受列表而不是单个发票吗?