- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当涉及到肥皂处理程序和大型 MTOM 附件时,IBM WebSphere 7 和 8 中的 JAXWS 实现似乎存在一些问题。当对 SOAPMessageContext 对象调用 getMessage() 时,整个消息(包括所有附件二进制内容)似乎被读入内存。这很容易导致 JVM 耗尽可用内存。
@Override
public boolean handleMessage(SOAPMessageContext context) {
SOAPMessage soapMsg = context.getMessage();
...
}
在上面的代码片段中,如果传入请求附件大于 JVM 中可用的可用内存量,context.getMessage() 可能会导致内存不足异常。
如何访问 SoapHeader 元素而不触发此不需要的功能?我看到 SOAPMessageContext 类有一个 getHeaders(...) 方法,但我不确定如何准确使用它。我特别不确定要为 JAXBContext 传递什么。有人可以提供如何使用此方法的示例或解释吗?
这是另一篇相关的 stackoverflow 文章:JAX-WS SoapHandler with large messages: OutOfMemoryError
最佳答案
以下是如何使用 WebSphere 内置 JAX-WS 实现来访问 header 而不读取整个消息。
public boolean handleMessage(SOAPMessageContext context) {
AttributedURI messageIdURI = (AttributedURI)context.get("com.ibm.wsspi.wsaddressing.inbound.MessageID");
String messageId = "";
if (messageIdURI != null && messageIdURI.getURI() != null) {
messageId = messageIdURI.getURI().toString();
}
EndpointReference fromApplicationEPR = (EndpointReference)context.get("com.ibm.wsspi.wsaddressing.inbound.FromEPR");
String fromApplication = "";
if (fromApplicationEPR != null && fromApplicationEPR.getAddress() != null &&
fromApplicationEPR.getAddress().getURI() != null) {
fromApplication = fromApplicationEPR.getAddress().getURI().toString();
}
...
return true;
}
请注意,这根据精确的 JAX-WS 实现而有所不同。当我有机会时,我将发布如何通过 Apache CXF 执行此操作。以下是上述代码所需的导入:
import com.ibm.ws.wsaddressing.AttributedURI;
import com.ibm.ws.wsaddressing.EndpointReference;
关于java - JAXWS SOAP 处理机大型 MTOM 附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15979580/
我们有一个非常简单的 WS,使用注释实现。我们希望能够从支持和不支持 MTOM/XOP 的客户端调用它。现在,它被简单地注释为@MTOM。 它接受包含(除其他外)base64Binary 元素的请求,
MTOM 是 W3C 消息传输优化机制,是一种高效地向 Web 服务发送二进制数据或从 Web 服务发送二进制数据的方法。 一般来说它是如何工作的? 最佳答案 这一切都始于 SOAP 是XML这一事实
我刚刚开始使用 SOAP Web 服务,偶然发现了 MTOM。 根据以下用例,我需要了解两件事:用户将通过传递图像来调用 SOAP Web 服务。作为响应,他们将获得同一图像的格式化版本。 我知道我需
如何配置自定义绑定(bind)和 MTOM 编码?我有一个自定义绑定(bind),如下所示,
我必须使用外部 Web 服务,但出现以下错误: The maximum buffer size (65536) has been exceeded while reading MTOM data 在今
我一直在使用一些代码通过使用来自 MSDN 的代码来创建 MTOM . 好像有错误,我不明白问题出在哪里,因为论坛上的一位用户指出有错误。 文件 (JPEG) 数据在反序列化后损坏。完整代码如下。
我有以下 mtom 响应作为字符串 --uuid:6b6fab3b-c481-4648-9eb5-8690096eb54d Content-Type: application/xop+xml; cha
作为我的 worklight 项目的一部分,我们正在调用一个 Web 服务,该服务将图像文件作为 MTOM 附件发送。有没有办法解析图像内容并转换为 JSON 对象?下面是我配置服务调用的适配器中的一
我正在尝试制作一个非常简单的网络服务,它执行以下操作: 客户端点击网络服务请求文件。 Web 服务的服务类查询一个哈希表,该哈希表具有键(搜索查询)和值作为文件(例如 pdf)的 base64 编码值
Java XML 验证是否支持启用了 MTOM 的消息?验证期间抛出以下错误。 cvc-type.3.1.2: Element 'ns2:myblobData' is a simple type, s
我正在使用 MTOM 将附件从客户端流式传输到服务器。 MTOM 得到应用,文件以二进制形式流式传输。但是根 Content-Type 始终是 "text/xml",应该是 "application/
SAAJ: SOAP with Attachments API for Java MTOM: SOAP消息传输优化机制 我的简单理解:它们处理 SOAP 附件,MTOM 是 SAAJ 的更优化版本。它
我正在寻找使用 JAX-WS RI 或基于 Axis2 的简单、有效的示例 MTOM 示例代码(服务 + 客户端)。 我在 google 上搜索这个词只是为了找到不能简单工作的片段和代码! 我想将 P
我们的应用程序使用 SOAP 将文件附件发送到 Web 服务。该服务在 Oracle Service Bus 11g 上运行。我们在客户端使用Spring WS + SAAJ + MTOM来发送请求。
我们有一个用例,我们必须通过 http 将大数据文件从环境 A 传输到环境 B。我们想要实现的是,发送方将数据分块发送,接收方开始将数据分块写入文件。因此我们决定使用 MTOM。 网络服务代码: @M
我将在早上用代码示例更新此内容,但我有一个基本的 JAX-WS 实现,用于通过 MTOM 下载生成的文件,并且当我在 SOAPUI 中测试它时附加的文件甚至有一个随机文件名尽管我传递给 DataHan
我正在尝试做非常简单的事情:客户端通过其 WSDL 调用 SOAP 服务来加载 PDF 文档。 我正在使用 Apache CXF 2.7.5 和 MTOM 问题是文档似乎没有完全发送到客户端(文件大小
对于一个项目,我正在使用 Apache Axis2 1.6.2 实现 SOAP 服务。我有一项服务需要使用 MTOM 接收文件。但遗憾的是我在接收 MTOM 附加文件时一直遇到问题。我不断收到异常:
我在 Java 1.6 中使用 JAX-WS 的引用实现。在我的服务器上,我有 Web 服务方法,它返回一个带有附件作为 javax.activation.DataHandler 的响应。 File
这是我已经回答过的那些“问题”之一,但是根据一周的谷歌搜索,我发布的信息似乎几乎为零。 TL;DR:WCF MTOM 编码的 BasicHttpBinding 客户端到外部/第三部分,非 .NET W
我是一名优秀的程序员,十分优秀!