永发信息网

WebService服务调用内存不足问题

答案:2  悬赏:70  手机版
解决时间 2021-12-21 08:13
  • 提问者网友:眉目添风霜
  • 2021-12-20 14:59
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString: java.lang.OutOfMemoryError: unable to create new native thread; nested exception is:
java.lang.OutOfMemoryError: unable to create new native thread
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:telcom1

java.lang.OutOfMemoryError: unable to create new native thread; nested exception is:
java.lang.OutOfMemoryError: unable to create new native thread
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1403)
at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1480)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1149)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
at javax.xml.parsers.SAXParser.parse(libgcj.so.7rh)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at MYWSDLService.ZHWSInterfaceSoapBindingStub.almOperate(ZHWSInterfaceSoapBindingStub.java:125)
at testZHClient.main(testZHClient.java:28)

如果只是增大虚拟机内存,肯定在某一个时间还会出现此问题吧。只不过服务维护时间长一点儿。
问题的根源应该是客户端的连接对象没有释放的问题。因为netstat -na|grep port 可以查看到好多状态时TIME_WAIT的连接。这些连接会占用大量系统资源。
解决方法应该就在此,但是不清楚这种连接的释放是在服务端进行还是客户端调用时使用单例模式即可。
请各位大虾赐教,不生感激。
最佳答案
  • 五星知识达人网友:迷人又混蛋
  • 2021-12-20 15:07
增大虚拟机内存,如果还出现这个问题,就是程序的问题 堆积了很多陈旧的对象而没有释放空间
全部回答
  • 1楼网友:神的生死簿
  • 2021-12-20 15:53
思路:1. 首先你要确定下是不是字符串长度的问题,把获取的值长度减少,看看还报不报错,不报错就证明是长度问题,反之另想解决办法. 2. 如果是长度的问题,而且你是从js端调用的web service的话,唯一的办法就只能用:<system.web.extensions>   <scripting>       <webservices>         <jsonserialization maxjsonlength="500000">         </jsonserialization>       </webservices>   </scripting> </system.web.extensions>这样的配置节的方法了 3. 另外就是你看看能不能设置下在服务端javascriptserializer.maxjsonlength属性 4. 如果你的配置节发生错误,你需要对比下你的web.config文件和标准的asp.net ajax的配置文件有什么不同。没办法,这个web.config太娇嫩了,有点毛病就跑步起来。你可以新建一个ajax的项目,对比下这个项目下的配置和你的配置又什么不同 5. 确保你正确引用system.web.extensions.dll 这个文件
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯