首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AXIOM编组:如何减少OMNamespaceImpl的内存消耗?

AXIOM编组:如何减少OMNamespaceImpl的内存消耗?
EN

Stack Overflow用户
提问于 2015-01-20 22:06:35
回答 1查看 243关注 0票数 0

我有一个包含数千个XML节点的大型xml结果。

当JAXB / AXIOM处理数据BEAN来构造SOAP响应时,我得到了一个内存峰值(+500Mb)。当我使用eclipse MAT分析JVM内存转储时,我注意到有很多AXIOM OMNamespaceImpl实例。

当我查看AXIOM StAXSOAPModelBuilder时,我看到了有趣的setter (namespaceURIInterning),它允许插入字符串以减少内存消耗。

对在Jaxb2Marshaller.marshal()中定制JAXB / AXIOM性能有什么建议吗?

致敬,JF.Desmarais

axiom 1.2.14 spring-ws 2.1.4 JDK 1.7

Spring-ws代码摘录以构建当前的SOAP响应:

代码语言:javascript
复制
public final void invoke(MessageContext messageContext) throws Exception {
        WebServiceMessage request = messageContext.getRequest();
        Object requestObject = unmarshalRequest(request);
        if (onUnmarshalRequest(messageContext, requestObject)) {
            Object responseObject = invokeInternal(requestObject);
            if (responseObject != null) {
                WebServiceMessage response = messageContext.getResponse();
                marshalResponse(responseObject, response);
                onMarshalResponse(messageContext, requestObject, responseObject);
            }
        }
    }   
 public WebServiceMessage getResponse() {
        if (response == null) {
            response = messageFactory.createWebServiceMessage();
        }
        return response;
    }

 public AxiomSoapMessage createWebServiceMessage() {
        return new AxiomSoapMessage(soapFactory, payloadCaching, langAttributeOnSoap11FaultString);
    }
EN

回答 1

Stack Overflow用户

发布于 2015-01-26 07:45:27

您正在使用已弃用的AbstractMarshallingPayloadEndpoint类。切换到基于注释的端点将启用一些优化(支持StreamingWebServiceMessage),从而避免您所描述的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28047352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档