Как программно переопределить / изменить одобренные стандарты в Java? - PullRequest
0 голосов
/ 27 марта 2011

В этом документе: http://download.oracle.com/javase/6/docs/technotes/guides/standards/ он описывает только один непрограммный способ переопределения одобренных стандартов в Java (например, для обеспечения другой реализации TransformerFactory и т. Д. ...).помещая баночки в <java-home>\lib\endorsed

Есть ли способ программно указать одобренную банку программно? (глядя на одобренную директорию Tomcat, я предполагаю, что это возможно после того, как все Tomcat написано вJava)

1 Ответ

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

Tomcat также просто устанавливает системное свойство при запуске JVM, поэтому использует обычный / документированный способ, , как описано в руководстве по загрузке классов ("Tomcat использует этот механизм, включив системное свойство установка -Djava.endorsed.dirs = $ JAVA_ENDORSED_DIRS в командной строке, которая запускает контейнер. ")

Следовательно, это не так просто сделать программно. Я предполагаю, что установка системного свойства после запуска JVM не имеет никакого эффекта (я не проверял это).

Однако это все еще возможно: вам просто нужно запустить другую JVM из своего приложения и установить там системное свойство. Ваше приложение должно будет сначала проверить, установлен ли одобренный dir, если да, запустить нормально, а если нет: используйте Runtime.getRuntime().exec(cmdarray), чтобы «запустить себя заново» (конечно, с системным свойством, установленным правильно). Это «само начало» немного сложно понять, но возможно. Компания, в которой я работаю ( www.day.com ), использует ее для всех продуктов, мы называем это «быстрый старт». Я полагаю, что мы на самом деле не устанавливаем одобренный каталог, но мы устанавливаем максимальный объем памяти (-Xmx..), если текущего значения недостаточно.

...