gpt4 book ai didi

java - 通过 axis2 网络服务上传 350MB 的附件时出现内存不足问题

转载 作者:行者123 更新时间:2023-11-28 21:53:26 25 4
gpt4 key购买 nike

我正在尝试通过 SOAP UI(启用 MTOM)上传大小为 350 MB 的附件,并将附件发送到 axis2 网络服务。

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

<parameter name="enableMTOM">true</parameter>

<parameter name="cacheAttachments">true</parameter>
<parameter name="attachmentDIR">C:\Temp\TempWS</parameter>
<parameter name="sizeThreshold">8000</parameter>

Tomcat Setting

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

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 网络服务上传/下载大型附件?

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

最佳答案

尝试增加堆空间

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 参数”

关于java - 通过 axis2 网络服务上传 350MB 的附件时出现内存不足问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27227512/

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