gpt4 book ai didi

java - Spring - 带有附件的 SOAP 的 Spring-WS 或带有 JAXB 作为数据绑定(bind)器的 MTOM

转载 作者:行者123 更新时间:2023-11-30 09:35:37 26 4
gpt4 key购买 nike

我有一个 Spring-WS Web 服务,我希望能够将二进制数据发送回客户端。我的意图是将 SOAP 响应格式化为使用 MTOM 或带附件的 Soap。响应将是一个 JAXB 对象。

我已经设置了 Spring-WS 环境,可以使用 JAXB 发送和接收请求。然而,我正在努力设置二进制附件响应,因为网络上的大多数教程和信息主要与客户端发送附件有关,而我对服务器将附件发送回客户端感兴趣。

两个问题:

  • 向客户端返回二进制数据的推荐方法是什么?带附件的 SOAP、MTOM 还是只是将 base64 编码的数据作为 xml 标记返回?

  • 是否有任何示例说明如何使用这两种方法之一配置 Spring-WS 以返回二进制附件?

最佳答案

1)Mtom 显然是通过 soap 发送文件的实际标准,所以我会推荐它。

2)如果您查看 spring-ws 发行版(不是来自 maven)附带的 mtom 示例,您将看到 90% 的所需设置。一个区别是您的附件的 expectedContentType 您应该将其设置为 application/octet-stream

现在你在服务器上的代码看起来像这样

try {
dataHandler = new DataHandler(new File("/tmp/test.exe").toURL());
} catch (MalformedURLException e) {
e.printStackTrace();
}
return new JaxbObjectResponse("id", dataHandler);

你的模式定义看起来像这样。

<xsd:element name="JaxbObjectResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:string" />
<xsd:element name="file" type="xsd:base64Binary" xmime:expectedContentTypes="application/octet-stream" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

关于java - Spring - 带有附件的 SOAP 的 Spring-WS 或带有 JAXB 作为数据绑定(bind)器的 MTOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com