Как я могу сказать своему приложению, что оно не должно использовать внешнего поставщика услуг из банки?

По какой-то причине нам нужен xdb.jar из Oracle XDK. Этот jar зависит от xmlparserv2.jar. Фактическая проблема заключается в том, что xmlparserv2.jar поставляется с некоторыми файлами конфигурации провайдера (META-INF/services). В банке есть поставщики услуг для javax.xml.transform.TransformerFactory, javax.xml.parsers.SAXParserFactory и javax.xml.parsers.DocumentBuilderFactory. . Реализации (от oracle.*) не работают вместе с некоторыми другими частями нашего программного обеспечения (им нужны стандартные фабрики).


person alexvetter    schedule 20.06.2011    source источник


Ответы (4)


Вы можете использовать отдельные загрузчики классов, чтобы изолировать банки от остальной части приложения. Этот вопрос касается этого.

person M Platvoet    schedule 21.06.2011

Вы можете просто удалить эти классы из xmlparserv2.jar

person Fortega    schedule 20.06.2011
comment
Извините, но это невозможно. Лицензия xmlparserv2.jar этого не позволяет. И xmlparserv2.jar нужны эти классы. - person alexvetter; 21.06.2011

см. здесь — «Приоритет пути к классам JNLP 1,5 против 1,6»

person Bozho    schedule 20.06.2011
comment
Спасибо, но это не решает мою проблему. xmlparserv2.jar перезаписывает классы, которые находятся в файле jre. Я не могу загрузить xmlparserv2.jar перед jre. (Могу я?) - person alexvetter; 20.06.2011
comment
вот что обсуждается в выпуске - как и под какими версиями. - person Bozho; 20.06.2011
comment
Хорошо, тогда я не очень понимаю обходной путь. В состав xmlparserv2.jar входят следующие пакеты: org.xml.sax.* org.w3c.dom.* oracle.xml.* javax.xml.* Вероятно, проблема связана с пакетом javax.xml.*... Но как Я говорю среде выполнения не использовать эту часть банки? - person alexvetter; 21.06.2011

Я решил проблему, удалив службы (META-INF/services). Мы запустили модульные тесты, и все заработало. Даже те части нашего программного обеспечения, которые зависят от xmlparserv2.jar/xdb.jar.

person alexvetter    schedule 31.10.2011