Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > CGI программа на Java


Автор: Saphir 1.11.2010, 17:03
Всем привет, объясните пожалуйста как запускать программу, написанную на Java как CGI. Вот так я пробовал
Код

#!"C:\Program Files\Java\jdk1.6.0_22\bin\javac.exe"

public class Test {
    
    public static void main(String[] args) {
        
            System.out.println("Content-Type: text/html\n\n");

        System.out.println("<html> <head>\n");
        System.out.println("<title>Hello,  World!</title>");
        System.out.println("</head>\n");
        System.out.println("<body>\n");
        System.out.println("<h1>Hello,  World!</h1>\n");
        System.out.println("</body> </html>\n"); 
    }

}


И вот что получаю 
Код

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Server error!</title>
<link rev="made" href="mailto:admin@localhost" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
    body { color: #000000; background-color: #FFFFFF; }
    a:link { color: #0000CC; }
    p, address {margin-left: 3em;}
    span {font-size: smaller;}
/*]]>*/--></style>
</head>

<body>
<h1>Server error!</h1>
<p>


  

    The server encountered an internal error and was 
    unable to complete your request.

    </p>
<p>


    Error message:
    <br />Premature end of script headers: Test.cgi

  

</p>
<p>
If you think this is a server error, please contact
the <a href="mailto:admin@localhost">webmaster</a>.

</p>

<h2>Error 500</h2>
<address>
  <a href="/">localhost</a><br />
  
  <span>11/01/10 16:55:10<br />
  Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_autoindex_color PHP/5.1.6</span>
</address>
</body>
</html>


Автор: Skipy 1.11.2010, 17:26
А Вы абсолютно уверены, что запуск компиляции исходника с произвольного языка в качестве CGI-процесса даст то, что Вам надо? Исполнять код кто будет? И как?

P.S. ТАК Вы этого не сделаете. Как минимум, надо менять сервер.

Автор: Saphir 1.11.2010, 17:29
Со строкой #!"C:\Program Files\Java\jdk1.6.0_22\bin\java.exe" в начале все тоже самое.... 

Автор: Skipy 1.11.2010, 17:36
Цитата(Saphir @ 1.11.2010,  17:29)
Со строкой #!"C:\Program Files\Java\jdk1.6.0_22\bin\java.exe" в начале все тоже самое....

Тогда вопрос меняется. Вы абсолютно уверены, что если скормите интерпретатору исходный код, то он сделает то, что Вам надо? Компилировать кто будет?

Автор: Saphir 1.11.2010, 20:19
Я вообще ни в чем не уверен, можно ли вообще это?  smile 
Цитата

P.S. ТАК Вы этого не сделаете. Как минимум, надо менять сервер.


Вы имеете в виду настройки? Если да, то какие?

Автор: sergioK 2.11.2010, 09:25
Цитата(Saphir @ 1.11.2010,  20:19)
Я вообще ни в чем не уверен, можно ли вообще это?  smile 
Цитата

P.S. ТАК Вы этого не сделаете. Как минимум, надо менять сервер.


Вы имеете в виду настройки? Если да, то какие?

на словах раскажите  что вы пытаетесь сделать ? подменить жавовский вывод на консоль , какой то другой опликацией ?


Автор: Skipy 2.11.2010, 11:27
Цитата(Saphir @ 1.11.2010,  20:19)
Я вообще ни в чем не уверен, можно ли вообще это?  smile 
Цитата

P.S. ТАК Вы этого не сделаете. Как минимум, надо менять сервер.


Вы имеете в виду настройки? Если да, то какие?

Так. В общем, понятно.

Java представляет из себя язык, в котором исходный код компилируется в промежуточный - байткод. Байткод исполняется интерпретатором. Для компиляции и исполнения в общем случае требуется указание библиотек.

Таким образом, Вы даже в теории не можете использовать исходный код Java как CGI-скрипт, ввиду двухстадийной обработки. Это не perl и не shell. 

Аналогом CGI в java являются сервлеты. Эти приложения разрабатываются и собираются в т.н. веб-приложения - архивы определенной структуры. И разворачиваются эти приложения под определенными серверами, простой Apache не подойдет. Для этого нужен сервлет-контейнер, например, Apache Tomcat. Или Resin, Jetty и т.п.

Добавлено через 58 секунд
Цитата(sergioK @ 2.11.2010,  09:25)
на словах раскажите  что вы пытаетесь сделать ? подменить жавовский вывод на консоль , какой то другой опликацией ?

Использовать исходный код Java в виде CGI-скрипта. Как это делается с perl, например.

Автор: Saphir 2.11.2010, 12:43
Skipy, спасибо, именно это и нужно было.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)