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