栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有大消息的JAX-WS SoapHandler:OutOfMemoryError

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有大消息的JAX-WS SoapHandler:OutOfMemoryError

实际上,有一个针对此的JAX-WS RI(aka Metro)解决方案非常有效。

参见https://javaee.github.io/metro/doc/user-guide/ch02.html#ficient-handlers-in-jax-ws-ri。不幸的是,该链接现在已断开,但您可以在WayBack Machine上找到它。我将在下面重点介绍:

Metro员工早在2007年就引入了另外一种处理程序类型MessageHandler,它是Metro专有的。它比SOAPHandler不尝试在内存中进行DOM表示要高效得多。

这是原始博客文章中的关键文本:

MessageHandler:

利用JAX-WS规范提供的可扩展处理程序框架和RI中更好的消息抽象,我们引入了一个新的处理程序,称为MessageHandler扩展您的Web服务应用程序。MessageHandler与SOAPHandler类似,不同之处在于它的实现可以访问MessageHandlerContext(MessageContext的扩展)。通过MessageHandlerContext,可以访问消息并使用消息API对其进行处理。正如我在博客标题中所述,此处理程序使您可以处理Message,它提供了有效的方法来访问/处理消息,而不仅仅是基于DOM的消息。处理程序的编程模型是相同的,并且消息处理程序可以与标准Logical和SOAP处理程序混合使用。我在JAX-WS RI 2.1.3中添加了一个示例,该示例显示了使用MessageHandler记录消息,这是该示例的摘录:

public class LoggingHandler implements MessageHandler<MessageHandlerContext> {    public boolean handleMessage(MessageHandlerContext mhc) {        Message m = mhc.getMessage().copy();        XMLStreamWriter writer = XMLStreamWriterFactory.create(System.out);        try { m.writeTo(writer);        } catch (XMLStreamException e) { e.printStackTrace(); return false;        }        return true;    }    public boolean handleFault(MessageHandlerContext mhc) {        .....         return true;    }    public void close(MessageContext messageContext) {    }    public Set getHeaders() {        return null;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506261.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号