在我的一项绩效咨询任务中,我发现有近 100 万个 com.sun.org.apache.xml.internal.resolver.CatalogEntry 条目,以 com.sun.org.apache.xml.internal.resolver 为主。目录管理器。更多详情如下
JBoss Application Server 上部署了 Web 服务。然后有一个在远程 JVM 上运行的 Liferay 应用程序正在使用这些服务。通过 Singleton 类获取服务如下
PaintingMasterEJBService paintingMasterEJBService = new PaintingMasterEJBService();
public PaintingMasterService getPaintingMasterServicePort() {
return paintingMasterEJBService.getPaintingMasterEJBServicePort();
}
每个 CatalogEntry 依次支配两个字符串 - 1) 在 WebServices 的 jar 文件中包含 WSDL 的路径 2) 实际的 wsdl 本身
总而言之,包含 CatalogEntry 的 CatalogManager 总共占用了大约 640MB,而只有少数用户登录到系统。很明显,CatalogEntry 正在泄漏。
我的问题是:
- 是不是获取服务的方式不对
- 或者这是上述类的已知错误吗
将不胜感激任何解决方案/指针。