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

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

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

Ответы [ 2 ]

1 голос
/ 27 марта 2011

Кажется, это удивительный ответ:

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

META-INF\services\ с именем

javax.xml.transform.TransformerFactory

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

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

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

0 голосов
/ 27 марта 2011

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

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

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

...