2012-01-03 5 views
0

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

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

ответ

1

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

Действительно ли это жизнеспособный вариант?

+0

Barmnik Хорошо, это похоже на то, что вы хотите импортировать классы в свой сервлет и вызвать функцию ... Это приемлемо, но тогда действительно ли будет какое-либо условие для создания банка? PLs объясняют – Sankalp

+0

Несомненно, его общий способ разработки веб-приложений, вы можете даже поставить свои классы в том же модуле с сервлетом. Просто имейте в виду, что однажды вызванный сервлет является обычным java-объектом, который может создавать и вызывать другие Java-объекты. Сервлет обычно является точкой входа вашего приложения на стороне сервера, обычно это довольно «тонкий» слой, основная обработка (алгоритмы/db) обычно выполняется в классах Java, доступных из сервлета –

1

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

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

0

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

1

Найдено another solution для этого, которое является более специфичным

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

общественного класса Launcher { ... государственной статической силы основных (String [] args) throws Exception { launch (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; 
} 

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

Смежные вопросы