如何使用Spring-WS直接使用SOAP进行SOAP?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

这工作正常,没有任何错误,但我们想直接流式传输!这显然是不可能的。我们通过流式传输一些数据来评估行为,我们做了一个简单的测试:

writer.writeStartElement("exampleResponse")

10000.times
{
    writer.writeStartElement("example")
    writer.writeEndElement()    
}

writer.writeEndElement()

StreamingOMDataSource显示这个的实现:

public XMLStreamReader getReader() throws XMLStreamException {
   ByteArrayOutputStream bos = new ByteArrayOutputStream();
   serialize(bos, null);

   ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
   return StAXUtils.createXMLStreamReader(bis);
}

如上所述,该方法#serialize()创建XMLStreamWriterwith ByteArrayOutputStream并调用有效载荷以启用写入:

public void serialize(OutputStream output, OMOutputFormat format) 
       throws XMLStreamException
{
   XMLStreamWriter streamWriter;
   if ([...]) {
      // Create stream writer with defined charset
   }
   else {
       streamWriter = StAXUtils.createXMLStreamWriter(output);
   }
   serialize(streamWriter);
}

public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException {
   payload.writeTo(xmlWriter);
   xmlWriter.flush();
}
提问于
用户回答回答于

你还需要禁用有效内容缓存:

<bean id="messageFactory" 
      class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
     <property name="payloadCaching" value="false"/>
</bean> 
用户回答回答于

如果你需要高性能,网络服务不是很好。但是,你可以手动优化简单的Web服务,但并不困难。但是,如果你需要更高的性能,切换到另一种传输格式将更好。

扫码关注云+社区

领取腾讯云代金券