У меня есть программа 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, объяснение было бы неплохим.