Простое развертывание файлов .jar без перезапуска службы

Мне интересно, есть ли простой способ легко развернуть .jar без перезапуска службы? Я нашел пару разных сообщений, но они немного устарели, и в них упоминается использование библиотеки под названием JavaLoader Программная перезагрузка JAR-файлов Java без перезапуска ColdFusion Есть ли альтернатива этому? Я разрабатываю с помощью java sdk, и перезапуск после каждого изменения занимает очень много времени, и я бы предпочел не использовать библиотеку только для этого.

Изменить: я использую Lucee 5.2


person Yamaha32088    schedule 05.04.2017    source источник
comment
Возможно, вы захотите указать, какой вариант (Adobe или Lucee) и какую версию вы используете. Я полагаю, что именно в Adobe ColdFusion 10 появилась возможность динамической загрузки файлов JAR (но не по умолчанию) — Расширенная интеграция Java в ColdFusion (обратите внимание на атрибут reloadOnChange)   -  person Miguel-F    schedule 05.04.2017
comment
@Miguel-F обновил детали   -  person Yamaha32088    schedule 05.04.2017
comment
В Lucee вы также должны иметь возможность использовать свойство javasettings в Application.cfc для загрузки jar-файлов и обнаружения изменений, но, похоже, существует ошибка с атрибутом reloadOnChange в Lucee.   -  person CfSimplicity    schedule 05.04.2017


Ответы (1)


Для Lucee Javaloader — это то, что нужно. https://github.com/markmandel/JavaLoader. Библиотека может быть немного старой, но и ColdFusion тоже. Javaloader никогда не заменялся, потому что он работает очень хорошо и замена не требуется. Разработчик, Марк Мандель, очень умный парень, который сейчас работает в Google. Вы можете узнать, чем он занимается, на странице https://twitter.com/Neurotic.

Javaloader прост в использовании, если вы понимаете, как его настроить. Он принимает массив путей к вашим библиотекам Java. После настройки используйте javaloader.create() для вызова ваших классов:

jars = [ expandPath( "/classes/mypackage.jar" ) ];
javaloader = createObject("component", "javaloader.JavaLoader").init( sourceDirectories = jars );
myclass = javaloader.create( "myclass" ).init();
person Robert Munn    schedule 05.04.2017
comment
Я действительно не хотел использовать библиотеку, но на самом деле я обнаружил, что мы уже используем ее в нескольких местах в нашей кодовой базе, так что это лучший ответ для меня. - person Yamaha32088; 05.04.2017
comment
JavaLoader превосходен и очень эффективен. Я бы рекомендовал убедиться, что вы используете последнюю версию (1.2) - person CfSimplicity; 05.04.2017