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

Настройка Apache, FCGI и Java

У меня есть программа Java, к которой я пытаюсь получить доступ через свой веб-сервер Apache 2.4.7 локально. Сначала я настроил его как обратный прокси-сервер с использованием mod_proxy_fcgi, в результате чего мне пришлось бы запускать веб-сервер с конфигурацией (1), запускать программу java вручную из командной строки каждый раз, прежде чем я запрашивал веб-страницу (2), затем я перешел к правильной ссылке со строкой запроса (3). Это сработало для моего тестирования и вернуло JSON из программы Java.

//(1) The configuration for the proxy that works
<IfModule proxy_fcgi_module> 
    ProxyPass /doTheThings/ fcgi://localhost:4000/
</IfModule>
<Proxy fcgi://localhost:4000/>
    ProxySet retry=0
</Proxy>

//(2) Command I entered into command line
java -DFCGI_PORT=4000 matdbquery/MatDbQuery  each time

//(3) The URL I would use
localhost/doTheThings/?noUpdate=false&whichData=layoutData 


Теперь я хочу сделать так, чтобы мне не приходилось каждый раз запускать программу Java вручную. Apache заканчивал мой Java-процесс, когда он использовал mod_proxy_fcgi, поэтому он больше не принимал новые запросы, что похоже на то, как mod_proxy_fcgi должен работать, поэтому я решил начать использовать mod_fcgid. Программа Java уже использовала пакет FCGI с fastcgi.com, поэтому никаких изменений в нем не было. Теперь я застрял на том, что мне нужно поместить в файл конфигурации Apache. Это только усложняется тем, что я не могу отладить проблему, так как я не знаю, какие ошибки может выдавать java.exe или какую команду Apache фактически выполняет даже с отладкой LogLevel.

(1) Как FCGI_PORT влияет на эту настройку с помощью mod_fcgid?
(2) При вызове java.exe вы никогда не включаете .class в имя. Я не понимаю, как я могу контролировать фактическое имя файла, которое Apache передает FcgidWrapper, какую директиву использовать (<Files>, <Directory>, <Location>), чтобы указать, какие файлы нуждаются в AddHandler и FcgidWrapper, или как я бы даже состояние AddHandler без использования расширения файла .class

//Sample of a configuration that I tried so you can see my mindset?
<Files ~ "\.class$">
    Options ExecCGI
    AddHandler fcgid-script .class
    FcgidWrapper "\"C:/Program Files/Java/jre7/bin/java.exe\" -DFCGI_PORT=4000" virtual
</Files>

Если мне кажется, что мне совершенно не хватает какого-то процесса о том, как работает FastCGI или Apache, объяснение было бы неплохим.