我们在OSGi包中使用自定义JCA实现时遇到问题。我们被客户强制使用的JCA实现导致类加载器内存泄漏。这可以防止在我们的捆绑中部署和使用它,因为我们很快就遇到了perm gen space问题。
JCA提供程序提出的解决方案是将JAR放在jre / lib / ext文件夹中,但不会从那里加载。据我所知,这是因为OSGi(Eclipse equinox)类加载器策略将引导类加载器作为每个bundle类加载器的父类,它排除了从jre / lib / ext文件夹加载的扩展类加载器。即没有bundle在jre / lib / ext文件夹中看到任何内容。
有没有办法让Eclipse equinox加载一个注册为安全提供程序的jar,只有一次,这样所有bundle或特定的bundle都能看到该提供者?在这种情况下,可以容忍JCA库未通过OSGi卸载的事实。
答案 0 :(得分:1)
您应该编辑系统包并从JCA-custom.jar添加包。
您可以通过多种方式定义应包含哪些包。