Как программно переопределить / изменить одобренные стандарты в Java?
В этом документе: http://download.oracle.com/javase/6/docs/technotes/guides/standards/ он описывает только один непрограммный способ переопределения одобренных стандартов в Java (например, для обеспечения другой реализации TransformerFactory и т. Д....). поставив банки в <java-home>\lib\endorsed
Есть ли способ уточнить одобренную банку программно? (глядя на одобренный каталог Tomcat, я предполагаю, что это возможно, после того, как Tomcat написан на Java)
1 ответ
Tomcat также просто устанавливает системное свойство при запуске JVM, поэтому использует обычный / документированный способ, как описано в загрузчике классов "как" ("Tomcat использует этот механизм, включив параметр системного свойства -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS в командной строке, которая запускает контейнер.")
Поэтому это не так просто сделать программно. Я предполагаю, что установка системного свойства после запуска JVM не имеет никакого эффекта (я не проверял это).
Тем не менее, это все еще возможно: вам просто нужно запустить другую JVM из вашего приложения и установить там системное свойство. Ваше приложение должно будет сначала проверить, установлен ли одобренный каталог, если да, запустить нормально, а если нет: использовать Runtime.getRuntime().exec(cmdarray)
"начать себя заново" (конечно, с системным свойством, установленным правильно). Это "само начало" немного сложно понять, но возможно. Компания, в которой я работаю ( http://www.day.com/), использует ее для всех продуктов, мы называем это "быстрый старт". Я считаю, что на самом деле мы не устанавливаем одобренный каталог, но мы устанавливаем максимальную память (-Xmx..
) если текущей настройки недостаточно.