0
我們在使用OSGi包中的自定義JCA實現時遇到了問題。我們的客戶不得不使用的JCA實現會導致類加載器內存泄漏。這會阻止在我們的軟件包中部署和使用它,因爲我們很快遇到了perm gen空間問題。OSGi中的JCE安全提供程序
JCA提供者提出的解決方案是將JAR放入jre/lib/ext文件夾中,但不從那裏加載。據我所知,這是因爲OSGi(Eclipse equinox)類加載器策略將引導類加載器作爲每個bundle classloader的父類,這不包括從jre/lib/ext文件夾加載的擴展類加載器。即沒有任何包會在jre/lib/ext文件夾中看到任何東西。
有沒有辦法讓Eclipse Equinox加載一個註冊爲安全提供程序的jar,只有一次,這樣所有的bundle或特定的bundle都可以看到該提供者?在這種情況下,JCA庫不能通過OSGi卸載的事實是可以容忍的。