从v6迁移应用程序到WebSphere v8并开始获取内存泄漏。主要的嫌疑人是org.apache.axis2。它看起来每次应用程序调用Web服务时,称为ServiceClient的对象都由WAS8创建,并存储在名为ClientConfigurationContextStore的东西中,然后永远不会被垃圾收集。有没有人有类似的问题?IBM WebSphere 8内存泄漏与Axis2 Web服务
1
A
回答
1
通过将原始轴1.4强制转换为提供的soap实现来解决此问题。这是通过将两个文件放在应用程序的WEB-INF /服务中完成的。第一个文件名为javax.xml.soap.MessageFactory,包含'org.apache.axis.soap.MessageFactoryImpl',第二个文件名为javax.xml.soap.SOAPConnectionFactory,包含'org.apache.axis.soap.SOAPConnectionFactoryImpl'。所以现在在代码中:javax.xml.soap.SOAPConnectionFactory.newInstance()在返回com.ibm.ws.webservices之前返回一个org.apache.axis的东西。没有内存泄漏了。
0
如果您在WebSphere v6中没有问题,则可能是v8中的泄漏。但是v8也可能对v6让你逃避的东西更为严格。
您是否检查过您正在重用所有可以使用的Axis2客户端对象,而不是在每次调用时重新创建不需要重新创建的对象?我记得我们在WAS v6.1下的Axis2客户端代码中存在一些泄漏,并意识到我们正在重新创建可以重用的对象。
0
在我们的一个项目中,我们使用Axis2 1.6.2作为服务客户端。应用程序服务器是WebSphere 7,并且在测试环境中时常发生内存不足的情况。当我检查堆转储AxisConfiguration类有很多AxisService类实例。我正在为每个请求实例化ServiceClient,并且我发现有时垃圾收集工作起来很晚才能完成此对象。所以我们使用ServiceClient单例解决了我们的问题。
相关问题
- 1. Websphere服务器/休眠内存泄漏?
- 2. Spring Web服务与Axis2 Web服务
- 3. Web Worker内存泄漏?
- 4. .NET内存泄漏
- 5. 内存泄漏Xcode 8仪器
- 6. 内存泄漏与SecPKCS12Import
- 7. 追踪.NET Windows服务内存泄漏
- 8. PHP Socket服务器内存泄漏
- 9. IBM WebSphere Commerce 8
- 10. 内存泄漏
- 11. Tomcat内存泄漏
- 12. rake任务内存泄漏
- 13. Axis2 Web服务
- 14. Magento内存泄漏
- 15. C#内存泄漏?
- 16. 内存泄漏与strtok
- 17. iPhone内存泄漏与CoreData
- 18. NSArray与componentsSeparatedByString内存泄漏
- 19. 内存泄漏与NSXMLParser
- 20. 内存泄漏与JAXB
- 21. UIDatePicker内存泄漏与ARC
- 22. 内存泄漏与OracleCommand
- 23. “内存泄漏”与grequests?
- 24. 内存泄漏与阵列
- 25. jsonp内存泄漏
- 26. ASIHTTPRequest内存泄漏
- 27. Windows Phone 8中的Advoid内存泄漏
- 28. NSUserDefaults initWithSuiteName在iOS 8中泄漏内存?
- 29. Msxml3 - 内存泄漏
- 30. web.py内存泄漏
想必您将Axis用作外部库?您是否考虑过使用WAS的内置Web Service支持,如JAX-WS?它的实现基于Axis,但可能会更可预测(和支持)。 – dbreaux 2012-03-20 14:21:22
是的,应用程序使用Axis。但在过去的10年中,这是一个巨大的遗留应用程序,在整个代码中大量的商业逻辑被编写/修改/修补。所以我宁愿不改变代码,但调整环境。 – 2012-03-20 23:42:26