Здесь я сталкиваюсь с загадкой.
Одно из разработанных мною приложений загружает некорректную реализацию класса JAXP DocumentBuilderFactory .Позже это поведение было выведено из другого класса в другом приложении, созданном другой командой / компанией.Указанный класс изменил предпочтительный класс DocumentBuilderFactory при загрузке путем включения статического блока, аналогичного приведенному ниже:
static
{
System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "a new factory");
}
Если он идет по Javadocs DocumentBuilderFactory.newInstance В этом методе было бы совершенно очевидно, что приведенный выше код отвечает за изменение реализации синтаксического анализатора, возвращаемого всем приложениям при вызове метода newInstance.
Был применен патч, который исправил эту проблему, но он приводит менячтобы задать этот вопрос - как определить, какой класс выполняет вызов System.setProperty во время выполнения?
Мы создали пользовательскую сборку OpenJDK с измененным классом System, который отвечал заприбить виновника по той простой причине, что у нас не было доступа ко всем источникам для всех приложений, развернутых на сервере.Но это стало возможным только благодаря тому, что производственная среда была воспроизведена в полном объеме.Следовательно, вопрос можно также интерпретировать как - как определить, какой класс выполняет вызов System.setProperty во время выполнения, в производственной среде?