Назад | Перейти на главную страницу

java из командной строки снова и снова

У меня есть приложение PHP, которое вызывает командную строку для выполнения некоторых конкретных операций.

Командная строка вызывает 'java -jar somefile.jar arg1 arg2'

Проблема в том, что это медленно, так как он должен запускать jar каждый раз, когда он вызывается.

Есть ли способ сохранить машинный код Java в кеше или есть ли способ оптимизировать весь процесс?

Спасибо джоэл

Обновление: JAR был разработан нашей командой.

Чтобы использовать в качестве службы, мне нужно будет установить какой-нибудь Java-сервер (Tomcat или ему подобный), верно?

А как насчет моста java php? Может ли это быть быстрее?

Если вы делаете это через командную строку, вы фактически запускаете другую исполняемую программу ("java"), поэтому вы не можете контролировать ее.

Вам нужна служба (в Windows) или демон (в Linux), который может получать запросы и обрабатывать их; без знания внутреннего устройства того, что делает это приложение Java, мы не можем предложить никакого решения.

Обновить

Это сильно зависит от того, что делает приложение.
Вполне возможно, что приложение Java будет работать как служба и обрабатывать запросы, например. прослушивая их в сетевом сокете и возвращая свой вывод через тот же сокет.
Сервер приложений Java (например, Tomcat) обычно участвует в генерации динамических веб-страниц, а не в «чистой» обработке данных.

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

Ну, у вас нет никакого способа ускорить работу вашей командной строки. Эта команда загрузит jvm, запустит код и выгрузит все. Вот что он делает.

Я бы, наверное, попробовал создать службу SOAP или что-то в этом роде. Или вы могли бы привязать приложение java к сокету и таким образом подключиться к php.

Насколько сильно вы контролируете программу Java? Вы застряли с этим как есть?

Вы можете использовать Nailgun, чтобы избежать накладных расходов на запуск JVM.

http://martiansoftware.com/nailgun/index.html