java默认的最大内存是64M,当用MTOM传送大附件的时候会出现java heap space错误。
• 一般来说,出现这种错误是程序的逻辑可能有问题,我们可以使用Eclipse Memory Analyzer来监控一下内存状态,找到原因。
• 对于MTOM来说,我们可以通过设置cache来解决这一问题。
服务端的设置
<parameter name="cacheAttachments" locked="false">true</parameter> <parameter name="attachmentDIR" locked="false">C:/upload/tep/</parameter> <parameter name="sizeThreshold" locked="false">4000</parameter>
在客户端的设置
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, "true");
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "D:\temp");
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, 4000);
经测试这种方法问题,还没找到解决方法。
• 另一种办法就是加大java的最小内存,用-Xmx来设置。细节
可以在windows 更改系统环境变量加上
JAVA_OPTS=-Xms64m -Xmx512m
这种办法可以发送成功