首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过OutOfMemory web服务上传350 web附件时出现的axis2问题

通过OutOfMemory web服务上传350 web附件时出现的axis2问题
EN

Stack Overflow用户
提问于 2014-12-01 11:33:25
回答 1查看 729关注 0票数 3

我试图通过SOAP (启用了MTOM )上传大小为350 MB的附件,并将附件发送到axis2 web服务。

Axis2 web服务被配置为在服务器端启用MTOM。并且在服务器端也启用了缓存。Axis2.xml中有以下配置:

代码语言:javascript
复制
<parameter name="enableMTOM">true</parameter>

代码语言:javascript
复制
<parameter name="cacheAttachments">true</parameter>
<parameter name="attachmentDIR">C:\Temp\TempWS</parameter>
<parameter name="sizeThreshold">8000</parameter>

tomcat中的最大堆大小设置为3000 MB(参见上面的屏幕截图),但web服务仍然将我抛到异常下面:

代码语言:javascript
复制
Java heap space
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOfRange(Arrays.java:2694)
    at java.lang.String.<init>(String.java:203)
    at java.lang.StringBuffer.toString(StringBuffer.java:561)
    at org.apache.axiom.util.base64.Base64Utils.encode(Base64Utils.java:81)
    at org.apache.axiom.om.impl.llom.OMTextImpl.getText(OMTextImpl.java:264)
    at org.apache.axiom.om.impl.llom.OMElementImpl.getText(OMElementImpl.java:786)
    at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:334)
    at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:407)
    at org.apache.axis2.databinding.utils.BeanUtil.processObject(BeanUtil.java:682)
    at org.apache.axis2.databinding.utils.BeanUtil.ProcessElement(BeanUtil.java:630)
    at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:562)
    at org.apache.axis2.rpc.receivers.RPCUtil.processRequest(RPCUtil.java:153)
    at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:188)
    at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
    at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
    at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at com.csdcsystems.amanda.servlet.AmandaAxisServlet.service(AmandaAxisServlet.java:103)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

我的问题:

  1. 有人能帮我理解我错过了什么吗?在tomcat配置中是否需要有额外的设置?
  2. 如何支持通过axis2 web服务上传/下载大型附件?

注意:服务被配置为将byte[]作为服务的输入/输出参数。

EN

回答 1

Stack Overflow用户

发布于 2014-12-01 11:41:38

尝试将堆空间增加到

代码语言:javascript
复制
C:\tomcat-7.0.57\bin>set JAVA_OPTS=-Xmx1g
C:\tomcat-7.0.57\bin>startup.bat

这将运行具有1GB堆空间的jvm,如果仍然抛出异常,请尝试2g。

如果您通过eclipse运行tomcat,请转到“运行配置”,选择您的项目,打开“参数”选项卡,并将-Xmx1g添加到"VM参数“中。

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

https://stackoverflow.com/questions/27227512

复制
相关文章

相似问题

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