Как запустить скрипт Groovy (или класс Java) с помощью сервера Nailgun - PullRequest
3 голосов
/ 20 июля 2011

Я разрабатываю скрипт оболочки 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, очень сложно получить какую-либо информацию о том, как его использовать ...

EDIT:

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

Ответы [ 3 ]

5 голосов
/ 21 июля 2011

Наконец-то понял. Я просто не понял, что мне нужно сначала добавить все необходимые классы в путь к классу 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
0 голосов
/ 22 июля 2011

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

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

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

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

0 голосов
/ 20 июля 2011

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

затем 'ng ... привет' с groovy на пути к классам

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

...