Как две программы, в зависимости от разных реализаций Xalan, могут сосуществовать в одном VM / System Classloader?

Я задал этот вопрос в нескольких вариантах, и я думаю, что я не задаю правильный вопрос. Теперь я подозреваю, что Xalan, поскольку он реализует одобренный стандарт Java, может иметь только одну реализацию на данном VM / ClassLoader.

Так это правда? 2 реализации Xalan не могут "жить" в одном и том же System ClassLoader? Или, если они могут, как?

2 ответа

Решение

Это кажется удивительным ответом:

Для каждой реализации Xalan используйте отдельный загрузчик классов и добавьте файл в

META-INF\services\ называется

javax.xml.transform.TransformerFactory

Отредактируйте его и поместите только содержимое Xalan, которое будет использовать загрузчик классов, например:

com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl

ПРИМЕЧАНИЕ: здесь хорошо то, что в отличие от обычного делегирования загрузки классов, META-INF\services сначала выполняется поиск в текущем загрузчике классов, где классы ищутся в родительском, затем в системном и только потом в дочернем загрузчике классов

В jdk включена некоторая версия xalan. Для большинства случаев мой личный опыт показывает, что использования этой версии достаточно. Даже если это может быть предыдущая версия, есть ли какая-то новая разработка xalan в настоящее время? Я предпочитаю использовать включенную, сильно протестированную версию.

Я не думаю, что иметь xsl-трансформеры в одном и том же jdk - это хорошая идея (даже если я думаю, что это можно сделать). Если вам действительно нужно использовать обновленную версию xalan вместо jdk, вы можете обратиться к этому faq: http://xml.apache.org/xalan-j/faq.html

Я удалил все специфические зависимости xalan в больших приложениях, используя только встроенную. Библиотеки как FOP, хотя ранее они претендовали на то, что им нужен какой-то конкретный xalan jar, без него работали нормально, и это решало множество проблем с загрузкой классов (сервер приложений java ee создавал проблемы в некоторых ситуациях, когда xalan был упакован).

Другие вопросы по тегам