Как запустить скрипт Groovy (или класс Java) с помощью сервера Nailgun

Я разрабатываю скрипт оболочки Groovy, который часто запускается (выполняю небольшие задачи), поэтому мне нужно быстрое время запуска JVM. Чтобы добиться этого, я пытаюсь запустить его с Nailgun.

Я установил Nailgun как пакет Ubuntu. Затем я исправил ошибку аргумента, связав /usr/bin/ng-server в /usr/bin/ng, Я запускаю Nailgun-Server следующим образом:

java -cp /usr/share/java/nailgun-0.7.1.jar -server com.martiansoftware.nailgun.NGServer

У меня есть этот простой фиктивный скрипт Groovy с именем hello.groovy просто для тестирования nailgun-сервера:

#!/usr/bin/env groovy
def sayHello() {
  println("Hello Groovy!");
}

sayHello();

Я скомпилировал файл с groovyc в hello.class.

Теперь я хочу запустить этот скрипт на сервере Nailgun. Мой наивный подход к этому:

ng hello
ng hello.sayHello

Но все, что я получаю, это ClassNotFoundExceptions:

java.lang.ClassNotFoundException: hello
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at com.martiansoftware.nailgun.NGSession.run(Unknown Source)

Итак, как правильно запустить скрипт Groovy с помощью сервера Nailgun? Я также был бы признателен за несколько хороших сайтов / учебных пособий о том, как использовать Nailgun, очень сложно получить какую-либо информацию о том, как его использовать...

РЕДАКТИРОВАТЬ:

Я также был бы признателен за полный пример (в том числе то, как конкретный класс вызывается с помощью ng) для использования nailgun с чистыми классами Java, поскольку я также не мог заставить ng работать с любым классом Java.

3 ответа

Решение

Наконец то понял. Я просто не понял, что мне нужно сначала добавить все необходимые классы в путь к классу Nailgun ( этот вопрос дал мне последние подсказки).

Сначала добавьте Groovy в путь к классам:

ng ng-cp /usr/share/java/groovy-all.jar

Затем добавьте каталог, содержащий скрипт Groovy / класс Java в classpath, в моем случае это:

ng ng-cp /home/$USER/tools/groovy

Теперь я могу запустить свой скрипт на Groovy с помощью Nailgun следующим образом:

ng hello

Я думаю, что jruby.org имеет самое последнее упоминание об этом давно утерянном оружии (которое когда-нибудь должен будет использовать Оракул, так как вялый холодный старт - ахиллесова пята для большинства новых птиц)

ты готовил свой сценарий к занятиям?

тогда "нг... привет" с отличным на пути к классам

мое слепое предположение (слишком ленив, чтобы переустановить мой рейлган после использования rvm для поддержки jRuby)

Я буду удивлен, если hello, который запускается, hello.groovy (интерпретируется), а не скомпилированный hello.class

не устойчивое решение, они должны просто иметь JSR для JVM клиента горячего запуска

так что JVM в режиме клиента запускается в качестве фонового демона, ожидающего запуска процесса Java и устранения всех иллюзий низкой производительности, которую Java всегда терпела

конечно, ради безопасности, производство всегда будет использовать полную точку доступа

Другие вопросы по тегам