Как я могу получить доступ / вызвать программу Java из сервлета - PullRequest
0 голосов
/ 03 января 2012

Я создал исполняемый jar-файл Java-программы и хочу получить к нему доступ через мой сервлет на той же машине, или он может быть на другой. Как я могу это сделать?

Я нашел много решений для вызова Servlet с помощью Java-программы с использованием сети / TCP ... но я ищу Servlet для вызова функции Java-программы.

Ответы [ 4 ]

1 голос
/ 01 апреля 2013

Найдено другое решение для этого, более конкретное

Если вы можете запустить все в одной и той же JVM, вы можете сделать что-то вроде этого:

публичный класс Launcher { ... public static void main (String [] args) выдает Exception { запуск (Class.forName (args [0]), programArgs (args, 1)); }

protected static void launch(Class program, String[] args) throws Exception {
    Method main = program.getMethod("main", new Class[]{String[].class});
    main.invoke(null, new Object[]{args});
}

protected static String[] programArgs(String[] sourceArgs, int n) {
    String[] destArgs = new String[sourceArgs.length - n];
    System.arraycopy(sourceArgs, n, destArgs, 0, destArgs.length);
    return destArgs;
}

И вызвать метод запуска с предоставленными / настроенными параметрами.

1 голос
/ 03 января 2012

Нет большой разницы между Java-программами и Java-сервлетами.Таким образом, вы просто импортируете java-программы, и их можно напрямую использовать внутри вашего java-сервлета.

Однако следует отметить, что java-программу, которую вы хотите импортировать, то есть ваш jar-файл, нужно поместить внутрьWEB-INF / class / directory.

1 голос
/ 03 января 2012

Вызов функции JavaProg означает создание другого процесса JVM, который очень дорогой. Почему бы вам просто не вставить этот jar (вы написали, что создаете эту программу, чтобы вы знали, как она встроена) в ваше веб-приложение и заставить ваш serlvet просто вызывать соответствующие классы?

Является ли вообще приемлемый вариант?

0 голосов
/ 03 января 2012

Вы можете просто добавить свой jar в свое приложение сервлета. Импортируйте этот jar в свой сервлет и вызовите соответствующий класс, который вы хотите использовать в вашем сервлете.

...