Ошибка во время выполнения - PullRequest
       26

Ошибка во время выполнения

1 голос
/ 08 декабря 2011

Я новичок в jsp и во время выполнения.Мне нужно иметь возможность запустить скрипт с кнопкой на странице веб-приложения.Расположение скрипта находится в / home / user / ejbca_4 / bin и для его запуска

cd ejbca_4/bin
./ejbca.sh batch

Кто-то рекомендовал поместить эти команды в файл .sh в / home / user / bin.Я создал /home/user/bin/test.sh со следующим содержимым:

#!/bin/bash
cd ejbca_4/bin
./ejbca.sh batch

Я добавил это на страницу jsp

<input type="submit" name="Generate test" value='<c:out value="Generate Test"/>' tabindex="<%=tabindex++%>"
            onClick='generate()'>

function generate() {
  Process proc = Runtime.getRuntime().exec("test.sh",null,null);
}

, но каким-то образом это дало NumberFormatException.Я удалил Process proc:

function generate() {
  Runtime.getRuntime().exec("test.sh",null,null);
}

, и не было никакого NumberFormatException.Однако скрипт не был запущен.Может кто-нибудь объяснить, как это должно быть сделано?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

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

В вашем случае код, который должен быть запущен на сервере:

Runtime.getRuntime().exec("test.sh", null, null);

Он должен быть окружен <% %>

И код на стороне клиента:

<input ... onclick='generate()'>
<script>
    function generate() {
        // tells the server to do 'Runtime.getRuntime().exec(...)'
    }
</script>
0 голосов
/ 08 декабря 2011

Каким должен быть ваш function generate()? Я не вижу, чтобы это было в каких-либо тегах, но похоже на JavaScript - когда вы пытаетесь вызвать код Java.

Прямо сейчас ваш onClick будет обрабатываться на стороне клиента, и ему нужен способ для вызова ваших вызовов времени выполнения на стороне сервера. Прямо сейчас у клиента нет пути, чтобы это произошло. Вам нужно сделать какой-то обратный вызов (возможно, с использованием AJAX), который приведет к тому, что сервер выполнит ваш вызов времени выполнения. Если он остается в JSP, его нужно заключить в <% ... %>, чтобы он был оценен как код Java.

Поскольку вы новичок в JSP, я настоятельно рекомендую вам пройти курс обучения Oracle Web Tier по адресу http://docs.oracle.com/javaee/5/tutorial/doc/bnadp.html.

...